diff options
author | Paul Olav Tvete <paul.tvete@gmail.com> | 2016-09-03 13:58:38 +0200 |
---|---|---|
committer | Paul Olav Tvete <paul.tvete@qt.io> | 2016-09-08 13:26:35 +0000 |
commit | 004c6ffdbdb91f215364740a1975b37fe54b757c (patch) | |
tree | 5284348819486de178c51209f95482e10847c1c5 /examples/wayland/custom-extension/cpp-client/main.cpp | |
parent | 7310fd4c925df7a3de0ae63e44ba0627228adc84 (diff) |
Simplify custom-extension example
Don't confuse people by creating the extension inside a platform plugin.
It's only necessary when modifying Qt's default behaviour, and we're not going
to teach that in this example.
Also remove the load/unload extension logic from the qml example. Don't make
people believe that they have to use a loader.
Change-Id: Id263bb7d77fba176bfb8b6843a6ece9a0a203754
Reviewed-by: Johan Helsing <johan.helsing@qt.io>
Reviewed-by: Pier Luigi Fiorini <pierluigi.fiorini@hawaiios.org>
Diffstat (limited to 'examples/wayland/custom-extension/cpp-client/main.cpp')
-rw-r--r-- | examples/wayland/custom-extension/cpp-client/main.cpp | 103 |
1 files changed, 103 insertions, 0 deletions
diff --git a/examples/wayland/custom-extension/cpp-client/main.cpp b/examples/wayland/custom-extension/cpp-client/main.cpp new file mode 100644 index 000000000..f5894dc81 --- /dev/null +++ b/examples/wayland/custom-extension/cpp-client/main.cpp @@ -0,0 +1,103 @@ +/**************************************************************************** + ** + ** Copyright (C) 2015 The Qt Company Ltd. + ** Contact: http://www.qt.io/licensing/ + ** + ** This file is part of the examples of the Qt Wayland module + ** + ** $QT_BEGIN_LICENSE:BSD$ + ** 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 <QGuiApplication> +#include <QRasterWindow> +#include <QPainter> +#include <QMouseEvent> +#include "../client-common/customextension.h" + +#include <QDebug> + +class TestWindow : public QRasterWindow +{ + Q_OBJECT + +public: + TestWindow(CustomExtension *customExtension) + : m_extension(customExtension) + { + connect(customExtension, SIGNAL(eventReceived(const QString &, uint)), + this, SLOT(handleEvent(const QString &, uint))); + } + +public slots: + void handleEvent(const QString &text, uint value) + { + qDebug() << "Client application received event" << text << value; + } + +protected: + void paintEvent(QPaintEvent *) + { + QPainter p(this); + p.fillRect(QRect(0,0,width(),height()),Qt::gray); + p.fillRect(50,50,100,100, QColor("#C0FFEE")); + } + + void mousePressEvent(QMouseEvent *ev) Q_DECL_OVERRIDE + { + bool insideRect = QRect(50,50,100,100).contains(ev->pos()); + + QString text = insideRect ? "Click inside" : "Click outside"; + int value = ev->pos().x(); + + qDebug() << "Client application sending request:" << text << value; + + m_extension->sendRequest(text, value); + } + +private: + CustomExtension *m_extension; +}; + +int main (int argc, char **argv) +{ + QGuiApplication app(argc, argv); + + CustomExtension customExtension; + + TestWindow window(&customExtension); + window.show(); + + return app.exec(); +} + +#include "main.moc" |