diff options
author | Paul Olav Tvete <paul.tvete@qt.io> | 2017-08-29 14:32:23 +0200 |
---|---|---|
committer | Paul Olav Tvete <paul.tvete@qt.io> | 2017-10-05 13:53:03 +0000 |
commit | 37a8e57d7b8ff9f4360d8a32a09618fbd16534be (patch) | |
tree | e34c196de61202067c5030e7b14e05f0542af834 /examples/wayland/custom-extension/compositor/customextension.h | |
parent | 00a99e631459eb7e52fde822c24d7b9d603008c4 (diff) |
Add non-global object to custom extension example
Show how to create non-global objects on the client side.
Also fix error in the XML file: move the enum outside the
event.
Change-Id: I85b4cae115a57d60eda4a54d652ea98a8cd39548
Reviewed-by: Johan Helsing <johan.helsing@qt.io>
Diffstat (limited to 'examples/wayland/custom-extension/compositor/customextension.h')
-rw-r--r-- | examples/wayland/custom-extension/compositor/customextension.h | 61 |
1 files changed, 61 insertions, 0 deletions
diff --git a/examples/wayland/custom-extension/compositor/customextension.h b/examples/wayland/custom-extension/compositor/customextension.h index b8f05b17c..de7df6acb 100644 --- a/examples/wayland/custom-extension/compositor/customextension.h +++ b/examples/wayland/custom-extension/compositor/customextension.h @@ -58,6 +58,8 @@ #include <QtWaylandCompositor/QWaylandCompositor> #include "qwayland-server-custom.h" +class CustomExtensionObject; + class CustomExtension : public QWaylandCompositorExtensionTemplate<CustomExtension> , public QtWaylandServer::qt_example_extension { @@ -71,6 +73,8 @@ signals: void bounce(QWaylandSurface *surface, uint ms); void spin(QWaylandSurface *surface, uint ms); + void customObjectCreated(CustomExtensionObject *obj); + public slots: void setFontSize(QWaylandSurface *surface, uint pixelSize); void showDecorations(QWaylandClient *client, bool); @@ -80,6 +84,63 @@ protected: void example_extension_bounce(Resource *resource, wl_resource *surface, uint32_t duration) override; void example_extension_spin(Resource *resource, wl_resource *surface, uint32_t duration) override; void example_extension_register_surface(Resource *resource, wl_resource *surface) override; + + void example_extension_create_local_object(Resource *resource, uint32_t id, const QString &color, const QString &text) override; +}; + + +class CustomExtensionObject : public QWaylandCompositorExtensionTemplate<CustomExtensionObject> + , public QtWaylandServer::qt_example_local_object +{ + Q_OBJECT + Q_PROPERTY(QString color READ color WRITE setColor NOTIFY colorChanged) + Q_PROPERTY(QString text READ text WRITE setText NOTIFY textChanged) +public: + CustomExtensionObject(const QString &color, const QString &text, struct ::wl_client *client, int id, int version); + + QString color() const + { + return m_color; + } + + QString text() const + { + return m_text; + } + +public slots: + void setColor(const QString &color) + { + if (m_color == color) + return; + + m_color = color; + emit colorChanged(m_color); + } + + void setText(QString text) + { + if (m_text == text) + return; + + m_text = text; + emit textChanged(m_text); + } + void sendClicked(); + +signals: + void colorChanged(const QString &color); + void resourceDestroyed(); + + void textChanged(QString text); + +protected: + void example_local_object_destroy_resource(Resource *resource) override; + void example_local_object_set_text(Resource *resource, const QString &text) override; + +private: + QString m_color; + QString m_text; }; Q_COMPOSITOR_DECLARE_QUICK_EXTENSION_CLASS(CustomExtension) |