diff options
Diffstat (limited to 'examples/bluetooth/pingpong')
-rw-r--r-- | examples/bluetooth/pingpong/assets/Board.qml | 190 | ||||
-rw-r--r-- | examples/bluetooth/pingpong/assets/Dialog.qml | 71 | ||||
-rw-r--r-- | examples/bluetooth/pingpong/assets/Menu.qml | 132 | ||||
-rw-r--r-- | examples/bluetooth/pingpong/assets/main.qml | 72 | ||||
-rw-r--r-- | examples/bluetooth/pingpong/doc/images/intro.png | bin | 27442 -> 0 bytes | |||
-rw-r--r-- | examples/bluetooth/pingpong/doc/images/intro1.png | bin | 12522 -> 0 bytes | |||
-rw-r--r-- | examples/bluetooth/pingpong/doc/src/pingpong.qdoc | 82 | ||||
-rw-r--r-- | examples/bluetooth/pingpong/main.cpp | 68 | ||||
-rw-r--r-- | examples/bluetooth/pingpong/pingpong.cpp | 489 | ||||
-rw-r--r-- | examples/bluetooth/pingpong/pingpong.h | 150 | ||||
-rw-r--r-- | examples/bluetooth/pingpong/pingpong.pro | 20 | ||||
-rw-r--r-- | examples/bluetooth/pingpong/resource.qrc | 8 |
12 files changed, 0 insertions, 1282 deletions
diff --git a/examples/bluetooth/pingpong/assets/Board.qml b/examples/bluetooth/pingpong/assets/Board.qml deleted file mode 100644 index 576772bf..00000000 --- a/examples/bluetooth/pingpong/assets/Board.qml +++ /dev/null @@ -1,190 +0,0 @@ -/*************************************************************************** -** -** Copyright (C) 2014 BlackBerry Limited. All rights reserved. -** Contact: https://www.qt.io/licensing/ -** -** This file is part of the examples of the QtBluetooth module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:BSD$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see https://www.qt.io/terms-conditions. For further -** information use the contact form at https://www.qt.io/contact-us. -** -** BSD License Usage -** Alternatively, you may use this file under the terms of the BSD license -** as follows: -** -** "Redistribution and use in source and binary forms, with or without -** modification, are permitted provided that the following conditions are -** met: -** * Redistributions of source code must retain the above copyright -** notice, this list of conditions and the following disclaimer. -** * Redistributions in binary form must reproduce the above copyright -** notice, this list of conditions and the following disclaimer in -** the documentation and/or other materials provided with the -** distribution. -** * Neither the name of The Qt Company Ltd nor the names of its -** contributors may be used to endorse or promote products derived -** from this software without specific prior written permission. -** -** -** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -import QtQuick 2.0 -import QtQuick.Window 2.1 - -Rectangle { - id: board - width: 600 - height: 300 - - // 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; - } - } - - // 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: 10 - - MouseArea { - id: leftMouse - anchors.fill: parent - 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: 10 - - MouseArea { - id: rightMouse - anchors.fill: parent - acceptedButtons: Qt.LeftButton - drag.target: rightblock - drag.axis: Drag.YAxis - drag.minimumY: 0 - drag.maximumY: (board.height - rightblock.height) - } - } - - property double leftBlockY: leftblock.y - onLeftBlockYChanged: pingPong.updateLeftBlock(leftblock.y) - - property double leftBlockUpdate: pingPong.leftBlockY - onLeftBlockUpdateChanged: leftblock.y = pingPong.leftBlockY - - property double rightBlockY: rightblock.y - onRightBlockYChanged: pingPong.updateRightBlock(rightblock.y) - - property double rightBlockUpdate: pingPong.rightBlockY - onRightBlockUpdateChanged: rightblock.y = pingPong.rightBlockY - - 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/2 - height: leftblock.width/2 - radius: width - color: "#363636" - x: pingPong.ballX - y: pingPong.ballY - - SequentialAnimation { - running: true - NumberAnimation { target: ball; property: "x"; duration: 50 } - NumberAnimation { target: ball; property: "y"; duration: 50 } - } - } - - Component.onCompleted: { - if (menulist.height == Screen.height && menulist.width == Screen.width) - pingPong.setSize(Screen.width, Screen.height) - else - pingPong.setSize(board.width, board.height) - pingPong.updateLeftBlock(leftblock.y) - pingPong.updateRightBlock(rightblock.y) - } -} diff --git a/examples/bluetooth/pingpong/assets/Dialog.qml b/examples/bluetooth/pingpong/assets/Dialog.qml deleted file mode 100644 index 6ec4f1dc..00000000 --- a/examples/bluetooth/pingpong/assets/Dialog.qml +++ /dev/null @@ -1,71 +0,0 @@ -/*************************************************************************** -** -** Copyright (C) 2014 BlackBerry Limited. All rights reserved. -** Contact: https://www.qt.io/licensing/ -** -** This file is part of the examples of the QtBluetooth module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:BSD$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see https://www.qt.io/terms-conditions. For further -** information use the contact form at https://www.qt.io/contact-us. -** -** BSD License Usage -** Alternatively, you may use this file under the terms of the BSD license -** as follows: -** -** "Redistribution and use in source and binary forms, with or without -** modification, are permitted provided that the following conditions are -** met: -** * Redistributions of source code must retain the above copyright -** notice, this list of conditions and the following disclaimer. -** * Redistributions in binary form must reproduce the above copyright -** notice, this list of conditions and the following disclaimer in -** the documentation and/or other materials provided with the -** distribution. -** * Neither the name of The Qt Company Ltd nor the names of its -** contributors may be used to endorse or promote products derived -** from this software without specific prior written permission. -** -** -** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -import QtQuick 2.0 - -Rectangle { - width: parent.width/2 - height: message.implicitHeight*2 - z: 50 - border.width: 2 - border.color: "#363636" - radius: 10 - - Text { - id: message - horizontalAlignment: Text.AlignHCenter - verticalAlignment: Text.AlignVCenter - anchors.fill: parent - wrapMode: Text.WordWrap - elide: Text.ElideMiddle - text: pingPong.message - color: "#363636" - } -} diff --git a/examples/bluetooth/pingpong/assets/Menu.qml b/examples/bluetooth/pingpong/assets/Menu.qml deleted file mode 100644 index 019718cf..00000000 --- a/examples/bluetooth/pingpong/assets/Menu.qml +++ /dev/null @@ -1,132 +0,0 @@ -/*************************************************************************** -** -** Copyright (C) 2014 BlackBerry Limited. All rights reserved. -** Contact: https://www.qt.io/licensing/ -** -** This file is part of the examples of the QtBluetooth module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:BSD$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see https://www.qt.io/terms-conditions. For further -** information use the contact form at https://www.qt.io/contact-us. -** -** BSD License Usage -** Alternatively, you may use this file under the terms of the BSD license -** as follows: -** -** "Redistribution and use in source and binary forms, with or without -** modification, are permitted provided that the following conditions are -** met: -** * Redistributions of source code must retain the above copyright -** notice, this list of conditions and the following disclaimer. -** * Redistributions in binary form must reproduce the above copyright -** notice, this list of conditions and the following disclaimer in -** the documentation and/or other materials provided with the -** distribution. -** * Neither the name of The Qt Company Ltd nor the names of its -** contributors may be used to endorse or promote products derived -** from this software without specific prior written permission. -** -** -** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -import QtQuick 2.0 - -Rectangle { - width: 600 - height: 300 - - - Rectangle { - width: parent.width - height: headerText.implicitHeight *1.2 - border.width: 1 - border.color: "#363636" - radius: 5 - - Text { - id: headerText - horizontalAlignment: Text.AlignHCenter - verticalAlignment: Text.AlignVCenter - anchors.fill: parent - text: "Welcome to PingPong Game \n Please select an option" - font.pointSize: 20 - elide: Text.ElideMiddle - color: "#363636" - } - } - - Rectangle { - id: startServer - anchors.centerIn: parent - width: parent.width/2 - height: startServerText.implicitHeight*5 - color: "#363636" - - Text { - id: startServerText - horizontalAlignment: Text.AlignHCenter - verticalAlignment: Text.AlignVCenter - anchors.fill: parent - font.bold: true - text: "Start PingPong server" - color: "#E3E3E3" - wrapMode: Text.WordWrap - } - - MouseArea { - anchors.fill: parent - onClicked: { - pageLoader.source = "Board.qml"; - pingPong.startServer(); - } - } - } - - Rectangle { - id: startClient - anchors.horizontalCenter: parent.horizontalCenter - anchors.top: startServer.bottom - anchors.topMargin: 10 - width: parent.width/2 - height: startClientText.implicitHeight*5 - color: "#363636" - - Text { - id: startClientText - horizontalAlignment: Text.AlignHCenter - verticalAlignment: Text.AlignVCenter - anchors.fill: parent - font.bold: true - text: "Start PingPong client" - color: "#E3E3E3" - wrapMode: Text.WordWrap - } - - MouseArea { - anchors.fill: parent - onClicked: { - pageLoader.source = "Board.qml"; - pingPong.startClient() - } - } - } -} diff --git a/examples/bluetooth/pingpong/assets/main.qml b/examples/bluetooth/pingpong/assets/main.qml deleted file mode 100644 index 10e477df..00000000 --- a/examples/bluetooth/pingpong/assets/main.qml +++ /dev/null @@ -1,72 +0,0 @@ -/*************************************************************************** -** -** Copyright (C) 2014 BlackBerry Limited. All rights reserved. -** Contact: https://www.qt.io/licensing/ -** -** This file is part of the examples of the QtBluetooth module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:BSD$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see https://www.qt.io/terms-conditions. For further -** information use the contact form at https://www.qt.io/contact-us. -** -** BSD License Usage -** Alternatively, you may use this file under the terms of the BSD license -** as follows: -** -** "Redistribution and use in source and binary forms, with or without -** modification, are permitted provided that the following conditions are -** met: -** * Redistributions of source code must retain the above copyright -** notice, this list of conditions and the following disclaimer. -** * Redistributions in binary form must reproduce the above copyright -** notice, this list of conditions and the following disclaimer in -** the documentation and/or other materials provided with the -** distribution. -** * Neither the name of The Qt Company Ltd nor the names of its -** contributors may be used to endorse or promote products derived -** from this software without specific prior written permission. -** -** -** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -import QtQuick 2.0 -import QtQuick.Window 2.1 - -Window { - id: menulist - width: 600 - height: 300 - visible: true - - Dialog { - id: info - anchors.centerIn: parent - visible: false - } - - Component.onCompleted: pageLoader.source = "Menu.qml" - - Loader { - id: pageLoader - anchors.fill: parent - } -} diff --git a/examples/bluetooth/pingpong/doc/images/intro.png b/examples/bluetooth/pingpong/doc/images/intro.png Binary files differdeleted file mode 100644 index 062b8ea0..00000000 --- a/examples/bluetooth/pingpong/doc/images/intro.png +++ /dev/null diff --git a/examples/bluetooth/pingpong/doc/images/intro1.png b/examples/bluetooth/pingpong/doc/images/intro1.png Binary files differdeleted file mode 100644 index c1cedae2..00000000 --- a/examples/bluetooth/pingpong/doc/images/intro1.png +++ /dev/null diff --git a/examples/bluetooth/pingpong/doc/src/pingpong.qdoc b/examples/bluetooth/pingpong/doc/src/pingpong.qdoc deleted file mode 100644 index 259b6b97..00000000 --- a/examples/bluetooth/pingpong/doc/src/pingpong.qdoc +++ /dev/null @@ -1,82 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2017 The Qt Company Ltd. -** Contact: https://www.qt.io/licensing/ -** -** This file is part of the documentation of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:FDL$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see https://www.qt.io/terms-conditions. For further -** information use the contact form at https://www.qt.io/contact-us. -** -** GNU Free Documentation License Usage -** Alternatively, this file may be used under the terms of the GNU Free -** Documentation License version 1.3 as published by the Free Software -** Foundation and appearing in the file included in the packaging of -** this file. Please review the following information to ensure -** the GNU Free Documentation License version 1.3 requirements -** will be met: https://www.gnu.org/licenses/fdl-1.3.html. -** $QT_END_LICENSE$ -** -****************************************************************************/ - -/*! - \example pingpong - \title Bluetooth QML Ping Pong example - \brief A QML example showing Bluetooth communication. - - The Bluetooth QML Ping Pong example presents the socket communication between two - Bluetooth devices. The basic concept is the ping pong game where two players - communicate via sockets. - - \image intro.png - - \include examples-run.qdocinc - - At the beginning, the user selects the role. One device acts as a server and the second - one as a client. After selecting the role, adjustments to the screen size are done - (two devices might have different screen sizes). The server side starts a service named - "PingPong server". - - \snippet pingpong/pingpong.cpp Starting the server - - On the client side, the full service discovery on the nearby Bluetooth devices is done. - - \snippet pingpong/pingpong.cpp Searching for the service - - When the ping pong service is discovered, the client connects to the server using the socket. - - \snippet pingpong/pingpong.cpp Connecting the socket - - On the server side, the connected signal is emitted initiating that the client is connected. - The necessary signals and slots on the server side are connected. - - \snippet pingpong/pingpong.cpp Initiating server socket - - The game starts after the devices are connected and the screen is adjusted. - - \snippet pingpong/pingpong.cpp Start the game - - The server updates the ball direction and coordinates. The coordinates of pedals are sent - to each other every 50ms. - - \snippet pingpong/pingpong.cpp Updating coordinates - - The coordinates are updated and exchanged via sockets. As presented, the server sends its - pedal's y coordinate and the ball coordinates whereas, the client sends only its pedal - y coordinate. - - \snippet pingpong/pingpong.cpp Checking the boundaries - - In the code above, it was shown how the server checks whether the ball has reached - the boundaries of the board. In the case of the goal, the server updates - the results via its socket. - - \image intro1.png - -*/ diff --git a/examples/bluetooth/pingpong/main.cpp b/examples/bluetooth/pingpong/main.cpp deleted file mode 100644 index 7c34b135..00000000 --- a/examples/bluetooth/pingpong/main.cpp +++ /dev/null @@ -1,68 +0,0 @@ -/*************************************************************************** -** -** Copyright (C) 2014 BlackBerry Limited. All rights reserved. -** Contact: https://www.qt.io/licensing/ -** -** This file is part of the examples of the QtBluetooth module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:BSD$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see https://www.qt.io/terms-conditions. For further -** information use the contact form at https://www.qt.io/contact-us. -** -** BSD License Usage -** Alternatively, you may use this file under the terms of the BSD license -** as follows: -** -** "Redistribution and use in source and binary forms, with or without -** modification, are permitted provided that the following conditions are -** met: -** * Redistributions of source code must retain the above copyright -** notice, this list of conditions and the following disclaimer. -** * Redistributions in binary form must reproduce the above copyright -** notice, this list of conditions and the following disclaimer in -** the documentation and/or other materials provided with the -** distribution. -** * Neither the name of The Qt Company Ltd nor the names of its -** contributors may be used to endorse or promote products derived -** from this software without specific prior written permission. -** -** -** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -#include <QQmlContext> -#include <QGuiApplication> -#include <QQmlApplicationEngine> -#include <QLoggingCategory> -#include "pingpong.h" - - -int main(int argc, char *argv[]) -{ - //QLoggingCategory::setFilterRules(QStringLiteral("qt.bluetooth* = true")); - QGuiApplication::setAttribute(Qt::AA_EnableHighDpiScaling); - QGuiApplication app(argc, argv); - PingPong pingPong; - QQmlApplicationEngine engine; - engine.rootContext()->setContextProperty("pingPong", &pingPong); - engine.load(QUrl("qrc:/assets/main.qml")); - return app.exec(); -} diff --git a/examples/bluetooth/pingpong/pingpong.cpp b/examples/bluetooth/pingpong/pingpong.cpp deleted file mode 100644 index d80df3d6..00000000 --- a/examples/bluetooth/pingpong/pingpong.cpp +++ /dev/null @@ -1,489 +0,0 @@ -/*************************************************************************** -** -** Copyright (C) 2014 BlackBerry Limited. All rights reserved. -** Contact: https://www.qt.io/licensing/ -** -** This file is part of the examples of the QtBluetooth module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:BSD$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see https://www.qt.io/terms-conditions. For further -** information use the contact form at https://www.qt.io/contact-us. -** -** BSD License Usage -** Alternatively, you may use this file under the terms of the BSD license -** as follows: -** -** "Redistribution and use in source and binary forms, with or without -** modification, are permitted provided that the following conditions are -** met: -** * Redistributions of source code must retain the above copyright -** notice, this list of conditions and the following disclaimer. -** * Redistributions in binary form must reproduce the above copyright -** notice, this list of conditions and the following disclaimer in -** the documentation and/or other materials provided with the -** distribution. -** * Neither the name of The Qt Company Ltd nor the names of its -** contributors may be used to endorse or promote products derived -** from this software without specific prior written permission. -** -** -** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -#include "pingpong.h" -#include <QDebug> -#ifdef Q_OS_ANDROID -#include <QtAndroid> -#endif - -PingPong::PingPong(): - m_serverInfo(0), socket(0), discoveryAgent(0), interval(5), m_resultLeft(0), m_resultRight(0), - m_showDialog(false), m_role(0), m_proportionX(0), m_proportionY(0), m_serviceFound(false) -{ - m_timer = new QTimer(this); - connect(m_timer, &QTimer::timeout, this, &PingPong::update); -} - -PingPong::~PingPong() -{ - delete m_timer; - delete m_serverInfo; - delete socket; - delete discoveryAgent; -} - -void PingPong::startGame() -{ - m_showDialog = false; - emit showDialogChanged(); - //! [Start the game] - if (m_role == 1) - updateDirection(); - - m_timer->start(50); - //! [Start the game] -} - -void PingPong::update() -{ - QByteArray size; - // Server is only updating the coordinates - //! [Updating coordinates] - if (m_role == 1) { - checkBoundaries(); - m_ballPreviousX = m_ballX; - m_ballPreviousY = m_ballY; - m_ballY = m_direction*(m_ballX+interval) - m_direction*m_ballX + m_ballY; - m_ballX = m_ballX + interval; - - size.setNum(m_ballX); - size.append(' '); - QByteArray size1; - size1.setNum(m_ballY); - size.append(size1); - size.append(' '); - size1.setNum(m_leftBlockY); - size.append(size1); - size.append(" \n"); - socket->write(size.constData()); - emit ballChanged(); - } - else if (m_role == 2) { - size.setNum(m_rightBlockY); - size.append(" \n"); - socket->write(size.constData()); - } - //! [Updating coordinates] -} - - - -void PingPong::setSize(const float &x, const float &y) -{ - m_boardWidth = x; - m_boardHeight = y; - m_targetX = m_boardWidth; - m_targetY = m_boardHeight/2; - m_ballPreviousX = m_ballX = m_boardWidth/2; - m_ballPreviousY = m_ballY = m_boardHeight - m_boardWidth/54; - emit ballChanged(); -} - -void PingPong::updateBall(const float &bX, const float &bY) -{ - m_ballX = bX; - m_ballY = bY; -} - -void PingPong::updateLeftBlock(const float &lY) -{ - m_leftBlockY = lY; -} - -void PingPong::updateRightBlock(const float &rY) -{ - m_rightBlockY = rY; -} - -void PingPong::checkBoundaries() -{ - float ballWidth = m_boardWidth/54; - float blockSize = m_boardWidth/27; - float blockHeight = m_boardHeight/5; - //! [Checking the boundaries] - if (((m_ballX + ballWidth) > (m_boardWidth - blockSize)) && ((m_ballY + ballWidth) < (m_rightBlockY + blockHeight)) - && (m_ballY > m_rightBlockY)) { - m_targetY = 2 * m_ballY - m_ballPreviousY; - m_targetX = m_ballPreviousX; - interval = -5; - updateDirection(); - } - else if ((m_ballX < blockSize) && ((m_ballY + ballWidth) < (m_leftBlockY + blockHeight)) - && (m_ballY > m_leftBlockY)) { - m_targetY = 2 * m_ballY - m_ballPreviousY; - m_targetX = m_ballPreviousX; - interval = 5; - updateDirection(); - } - else if (m_ballY < 0 || (m_ballY + ballWidth > m_boardHeight)) { - m_targetY = m_ballPreviousY; - m_targetX = m_ballX + interval; - updateDirection(); - } - //! [Checking the boundaries] - else if ((m_ballX + ballWidth) > m_boardWidth) { - m_resultLeft++; - m_targetX = m_boardWidth; - m_targetY = m_boardHeight/2; - m_ballPreviousX = m_ballX = m_boardWidth/2; - m_ballPreviousY = m_ballY = m_boardHeight - m_boardWidth/54; - - updateDirection(); - checkResult(); - QByteArray result; - result.append("result "); - QByteArray res; - res.setNum(m_resultLeft); - result.append(res); - result.append(' '); - res.setNum(m_resultRight); - result.append(res); - result.append(" \n"); - socket->write(result); - qDebug() << result; - emit resultChanged(); - } - else if (m_ballX < 0) { - m_resultRight++; - m_targetX = 0; - m_targetY = m_boardHeight/2; - m_ballPreviousX = m_ballX = m_boardWidth/2; - m_ballPreviousY = m_ballY = m_boardHeight - m_boardWidth/54; - updateDirection(); - checkResult(); - QByteArray result; - result.append("result "); - QByteArray res; - res.setNum(m_resultLeft); - result.append(res); - result.append(' '); - res.setNum(m_resultRight); - result.append(res); - result.append(" \n"); - socket->write(result); - emit resultChanged(); - } -} - -void PingPong::checkResult() -{ - if (m_resultRight == 10 && m_role == 2) { - setMessage("Game over. You win!"); - m_timer->stop(); - } - else if (m_resultRight == 10 && m_role == 1) { - setMessage("Game over. You lose!"); - m_timer->stop(); - } - else if (m_resultLeft == 10 && m_role == 1) { - setMessage("Game over. You win!"); - m_timer->stop(); - } - else if (m_resultLeft == 10 && m_role == 2) { - setMessage("Game over. You lose!"); - m_timer->stop(); - } -} - -void PingPong::updateDirection() -{ - m_direction = (m_targetY - m_ballY)/(m_targetX - m_ballX); -} - -void PingPong::startServer() -{ - setMessage(QStringLiteral("Starting the server")); - //! [Starting the server] - m_serverInfo = new QBluetoothServer(QBluetoothServiceInfo::RfcommProtocol, this); - connect(m_serverInfo, &QBluetoothServer::newConnection, - this, &PingPong::clientConnected); - connect(m_serverInfo, QOverload<QBluetoothServer::Error>::of(&QBluetoothServer::error), - this, &PingPong::serverError); - const QBluetoothUuid uuid(serviceUuid); - - m_serverInfo->listen(uuid, QStringLiteral("PingPong server")); - //! [Starting the server] - setMessage(QStringLiteral("Server started, waiting for the client. You are the left player.")); - // m_role is set to 1 if it is a server - m_role = 1; - emit roleChanged(); -} - -void PingPong::startClient() -{ - //! [Searching for the service] - discoveryAgent = new QBluetoothServiceDiscoveryAgent(QBluetoothAddress()); - - connect(discoveryAgent, &QBluetoothServiceDiscoveryAgent::serviceDiscovered, - this, &PingPong::addService); - connect(discoveryAgent, &QBluetoothServiceDiscoveryAgent::finished, - this, &PingPong::done); - connect(discoveryAgent, QOverload<QBluetoothServiceDiscoveryAgent::Error>::of(&QBluetoothServiceDiscoveryAgent::error), - this, &PingPong::serviceScanError); -#ifdef Q_OS_ANDROID //see QTBUG-61392 - if (QtAndroid::androidSdkVersion() >= 23) - discoveryAgent->setUuidFilter(QBluetoothUuid(androidUuid)); - else - discoveryAgent->setUuidFilter(QBluetoothUuid(serviceUuid)); -#else - discoveryAgent->setUuidFilter(QBluetoothUuid(serviceUuid)); -#endif - discoveryAgent->start(QBluetoothServiceDiscoveryAgent::FullDiscovery); - - //! [Searching for the service] - setMessage(QStringLiteral("Starting server discovery. You are the right player")); - // m_role is set to 2 if it is a client - m_role = 2; - emit roleChanged(); -} - -void PingPong::clientConnected() -{ - //! [Initiating server socket] - if (!m_serverInfo->hasPendingConnections()) { - setMessage("FAIL: expected pending server connection"); - return; - } - socket = m_serverInfo->nextPendingConnection(); - if (!socket) - return; - socket->setParent(this); - connect(socket, &QBluetoothSocket::readyRead, - this, &PingPong::readSocket); - connect(socket, &QBluetoothSocket::disconnected, - this, &PingPong::clientDisconnected); - connect(socket, QOverload<QBluetoothSocket::SocketError>::of(&QBluetoothSocket::error), - this, &PingPong::socketError); - - //! [Initiating server socket] - setMessage(QStringLiteral("Client connected.")); - - QByteArray size; - size.setNum(m_boardWidth); - size.append(' '); - QByteArray size1; - size1.setNum(m_boardHeight); - size.append(size1); - size.append(" \n"); - socket->write(size.constData()); - -} - -void PingPong::clientDisconnected() -{ - setMessage(QStringLiteral("Client disconnected")); - m_timer->stop(); -} - -void PingPong::socketError(QBluetoothSocket::SocketError error) -{ - Q_UNUSED(error); - m_timer->stop(); -} - -void PingPong::serverError(QBluetoothServer::Error error) -{ - Q_UNUSED(error); - m_timer->stop(); -} - -void PingPong::done() -{ - qDebug() << "Service scan done"; - if (!m_serviceFound) - setMessage("PingPong service not found"); -} - -void PingPong::addService(const QBluetoothServiceInfo &service) -{ - setMessage("Service found. Setting parameters..."); - //! [Connecting the socket] - socket = new QBluetoothSocket(QBluetoothServiceInfo::RfcommProtocol); - socket->connectToService(service); - - connect(socket, &QBluetoothSocket::readyRead, this, &PingPong::readSocket); - connect(socket, &QBluetoothSocket::connected, this, &PingPong::serverConnected); - connect(socket, &QBluetoothSocket::disconnected, this, &PingPong::serverDisconnected); - //! [Connecting the socket] - m_serviceFound = true; -} - -void PingPong::serviceScanError(QBluetoothServiceDiscoveryAgent::Error error) -{ - setMessage(QStringLiteral("Scanning error") + error); -} - -bool PingPong::showDialog() const -{ - return m_showDialog; -} - -QString PingPong::message() const -{ - return m_message; -} - -void PingPong::serverConnected() -{ - setMessage("Server Connected"); - QByteArray size; - size.setNum(m_boardWidth); - size.append(' '); - QByteArray size1; - size1.setNum(m_boardHeight); - size.append(size1); - size.append(" \n"); - socket->write(size.constData()); -} - -void PingPong::serverDisconnected() -{ - setMessage("Server Disconnected"); - m_timer->stop(); -} - -void PingPong::readSocket() -{ - if (!socket) - return; - const char sep = ' '; - QByteArray line; - while (socket->canReadLine()) { - line = socket->readLine(); - //qDebug() << QString::fromUtf8(line.constData(), line.length()); - if (line.contains("result")) { - QList<QByteArray> result = line.split(sep); - if (result.size() > 2) { - QByteArray leftSide = result.at(1); - QByteArray rightSide = result.at(2); - m_resultLeft = leftSide.toInt(); - m_resultRight = rightSide.toInt(); - emit resultChanged(); - checkResult(); - } - } - } - if ((m_proportionX == 0 || m_proportionY == 0)) { - QList<QByteArray> boardSize = line.split(sep); - if (boardSize.size() > 1) { - QByteArray boardWidth = boardSize.at(0); - QByteArray boardHeight = boardSize.at(1); - m_proportionX = m_boardWidth/boardWidth.toFloat(); - m_proportionY = m_boardHeight/boardHeight.toFloat(); - setMessage("Screen adjusted. Get ready!"); - QTimer::singleShot(3000, this, SLOT(startGame())); - } - } - else if (m_role == 1) { - QList<QByteArray> boardSize = line.split(sep); - if (boardSize.size() > 1) { - QByteArray rightBlockY = boardSize.at(0); - m_rightBlockY = m_proportionY * rightBlockY.toFloat(); - emit rightBlockChanged(); - } - } - else if (m_role == 2) { - QList<QByteArray> boardSize = line.split(sep); - if (boardSize.size() > 2) { - QByteArray ballX = boardSize.at(0); - QByteArray ballY = boardSize.at(1); - QByteArray leftBlockY = boardSize.at(2); - m_ballX = m_proportionX * ballX.toFloat(); - m_ballY = m_proportionY * ballY.toFloat(); - m_leftBlockY = m_proportionY * leftBlockY.toFloat(); - emit leftBlockChanged(); - emit ballChanged(); - } - } -} - -void PingPong::setMessage(const QString &message) -{ - m_showDialog = true; - m_message = message; - emit showDialogChanged(); -} - -int PingPong::role() const -{ - return m_role; -} - -int PingPong::leftResult() const -{ - return m_resultLeft; -} - -int PingPong::rightResult() const -{ - return m_resultRight; -} - -float PingPong::ballX() const -{ - return m_ballX; -} - -float PingPong::ballY() const -{ - return m_ballY; -} - - -float PingPong::leftBlockY() const -{ - return m_leftBlockY; -} - -float PingPong::rightBlockY() const -{ - return m_rightBlockY; -} diff --git a/examples/bluetooth/pingpong/pingpong.h b/examples/bluetooth/pingpong/pingpong.h deleted file mode 100644 index 315f270b..00000000 --- a/examples/bluetooth/pingpong/pingpong.h +++ /dev/null @@ -1,150 +0,0 @@ -/*************************************************************************** -** -** Copyright (C) 2014 BlackBerry Limited. All rights reserved. -** Contact: https://www.qt.io/licensing/ -** -** This file is part of the examples of the QtBluetooth module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:BSD$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see https://www.qt.io/terms-conditions. For further -** information use the contact form at https://www.qt.io/contact-us. -** -** BSD License Usage -** Alternatively, you may use this file under the terms of the BSD license -** as follows: -** -** "Redistribution and use in source and binary forms, with or without -** modification, are permitted provided that the following conditions are -** met: -** * Redistributions of source code must retain the above copyright -** notice, this list of conditions and the following disclaimer. -** * Redistributions in binary form must reproduce the above copyright -** notice, this list of conditions and the following disclaimer in -** the documentation and/or other materials provided with the -** distribution. -** * Neither the name of The Qt Company Ltd nor the names of its -** contributors may be used to endorse or promote products derived -** from this software without specific prior written permission. -** -** -** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -#ifndef PINGPONG_H -#define PINGPONG_H - -#include <QTimer> -#include <QObject> -#include <qbluetoothserver.h> -#include <qbluetoothserviceinfo.h> -#include <qbluetoothlocaldevice.h> -#include <qbluetoothservicediscoveryagent.h> - -static QString serviceUuid(QStringLiteral("e8e10f95-1a70-4b27-9ccf-02010264e9c9")); -static QString androidUuid(QStringLiteral("c9e96402-0102-cf9c-274b-701a950fe1e8")); - -class PingPong: public QObject -{ - Q_OBJECT - Q_PROPERTY(float ballX READ ballX NOTIFY ballChanged) - Q_PROPERTY(float ballY READ ballY NOTIFY ballChanged) - Q_PROPERTY(float leftBlockY READ leftBlockY NOTIFY leftBlockChanged) - Q_PROPERTY(float rightBlockY READ rightBlockY NOTIFY rightBlockChanged) - Q_PROPERTY(bool showDialog READ showDialog NOTIFY showDialogChanged) - Q_PROPERTY(QString message READ message NOTIFY showDialogChanged) - Q_PROPERTY(int role READ role NOTIFY roleChanged) - Q_PROPERTY(int leftResult READ leftResult NOTIFY resultChanged) - Q_PROPERTY(int rightResult READ rightResult NOTIFY resultChanged) -public: - PingPong(); - ~PingPong(); - float ballX() const; - float ballY() const; - float leftBlockY() const; - float rightBlockY() const; - void checkBoundaries(); - void updateDirection(); - bool showDialog() const; - QString message() const; - void setMessage(const QString &message); - int role() const; - int leftResult() const; - int rightResult() const; - void checkResult(); - -public slots: - void startGame(); - void update(); - void setSize(const float &x, const float &y); - void updateBall(const float &bX, const float &bY); - void updateLeftBlock(const float &lY); - void updateRightBlock(const float &rY); - void startServer(); - void startClient(); - void clientConnected(); - void clientDisconnected(); - void serverConnected(); - void serverDisconnected(); - void socketError(QBluetoothSocket::SocketError); - void serverError(QBluetoothServer::Error); - void serviceScanError(QBluetoothServiceDiscoveryAgent::Error); - void done(); - void addService(const QBluetoothServiceInfo &); - void readSocket(); - -Q_SIGNALS: - void ballChanged(); - void leftBlockChanged(); - void rightBlockChanged(); - void showDialogChanged(); - void roleChanged(); - void resultChanged(); - -private: - QBluetoothServer *m_serverInfo; - QBluetoothServiceInfo m_serviceInfo; - QBluetoothSocket *socket; - QBluetoothServiceDiscoveryAgent *discoveryAgent; - - float m_ballX; - float m_ballY; - float m_ballPreviousX; - float m_ballPreviousY; - float m_leftBlockY; - float m_rightBlockY; - QTimer *m_timer; - float m_boardWidth; - float m_boardHeight; - float m_direction; - float m_targetX; - float m_targetY; - int interval; - int m_resultLeft; - int m_resultRight; - bool m_showDialog; - QString m_message; - int m_role; - float m_proportionX; - float m_proportionY; - bool m_serviceFound; -}; - -#endif // PINGPONG_H diff --git a/examples/bluetooth/pingpong/pingpong.pro b/examples/bluetooth/pingpong/pingpong.pro deleted file mode 100644 index aa79212e..00000000 --- a/examples/bluetooth/pingpong/pingpong.pro +++ /dev/null @@ -1,20 +0,0 @@ -TEMPLATE = app -TARGET = pingpong - -QT += quick bluetooth -android: QT += androidextras - -# Input -SOURCES += main.cpp \ - pingpong.cpp - -OTHER_FILES += assets/*.qml - -RESOURCES += \ - resource.qrc - -HEADERS += \ - pingpong.h - -target.path = $$[QT_INSTALL_EXAMPLES]/bluetooth/pingpong -INSTALLS += target diff --git a/examples/bluetooth/pingpong/resource.qrc b/examples/bluetooth/pingpong/resource.qrc deleted file mode 100644 index 1475a7f3..00000000 --- a/examples/bluetooth/pingpong/resource.qrc +++ /dev/null @@ -1,8 +0,0 @@ -<RCC> - <qresource prefix="/"> - <file>assets/main.qml</file> - <file>assets/Board.qml</file> - <file>assets/Dialog.qml</file> - <file>assets/Menu.qml</file> - </qresource> -</RCC> |