From 6e1e387174d20fb62a804b6e27438bcc5ea59f28 Mon Sep 17 00:00:00 2001 From: Steven Ceuppens Date: Fri, 27 Sep 2013 14:27:27 +0200 Subject: Changes to integrate the websocket module as a full Qt Add-On module - Changed project files to use Qt structure - Moved existing sources into subdirectory, to make room for moduels - Created a "import/qmlwebsocket" module skeleton (works, but needs to be extended) - Modified examples to not use "include(.pri)", but use "QT += websocket" - Added qml example skeleton (works, but no useful functionality yet) Project can be build with: $ qmake $ make $ make install Module can be used in other projects with QT += websockets Change-Id: I2123026958b264670dbf8a978dee76edf5855806 Reviewed-by: Kurt Pattyn --- src/imports/imports.pro | 3 ++ src/imports/qmlwebsockets/qmldir | 3 ++ src/imports/qmlwebsockets/qmlwebsockets.pro | 11 ++++++ src/imports/qmlwebsockets/qmlwebsockets_plugin.cpp | 34 ++++++++++++++++++ src/imports/qmlwebsockets/qmlwebsockets_plugin.h | 40 ++++++++++++++++++++++ src/imports/qmlwebsockets/qqmlwebsocket.cpp | 35 +++++++++++++++++++ src/imports/qmlwebsockets/qqmlwebsocket.h | 40 ++++++++++++++++++++++ 7 files changed, 166 insertions(+) create mode 100644 src/imports/imports.pro create mode 100644 src/imports/qmlwebsockets/qmldir create mode 100644 src/imports/qmlwebsockets/qmlwebsockets.pro create mode 100644 src/imports/qmlwebsockets/qmlwebsockets_plugin.cpp create mode 100644 src/imports/qmlwebsockets/qmlwebsockets_plugin.h create mode 100644 src/imports/qmlwebsockets/qqmlwebsocket.cpp create mode 100644 src/imports/qmlwebsockets/qqmlwebsocket.h (limited to 'src/imports') diff --git a/src/imports/imports.pro b/src/imports/imports.pro new file mode 100644 index 0000000..6bf8069 --- /dev/null +++ b/src/imports/imports.pro @@ -0,0 +1,3 @@ +TEMPLATE = subdirs + +SUBDIRS += qmlwebsockets diff --git a/src/imports/qmlwebsockets/qmldir b/src/imports/qmlwebsockets/qmldir new file mode 100644 index 0000000..549c286 --- /dev/null +++ b/src/imports/qmlwebsockets/qmldir @@ -0,0 +1,3 @@ +module Qt.Playground.WebSockets + +plugin declarative_qmlwebsockets diff --git a/src/imports/qmlwebsockets/qmlwebsockets.pro b/src/imports/qmlwebsockets/qmlwebsockets.pro new file mode 100644 index 0000000..fc25714 --- /dev/null +++ b/src/imports/qmlwebsockets/qmlwebsockets.pro @@ -0,0 +1,11 @@ +QT += websockets qml + +TARGETPATH = Qt/Playground/WebSockets + +HEADERS += qmlwebsockets_plugin.h \ + qqmlwebsocket.h + +SOURCES += qmlwebsockets_plugin.cpp \ + qqmlwebsocket.cpp + +load(qml_plugin) diff --git a/src/imports/qmlwebsockets/qmlwebsockets_plugin.cpp b/src/imports/qmlwebsockets/qmlwebsockets_plugin.cpp new file mode 100644 index 0000000..d757348 --- /dev/null +++ b/src/imports/qmlwebsockets/qmlwebsockets_plugin.cpp @@ -0,0 +1,34 @@ +/* +QWebSockets implements the WebSocket protocol as defined in RFC 6455. +Copyright (C) 2013 Kurt Pattyn (pattyn.kurt@gmail.com) + +This library is free software; you can redistribute it and/or +modify it under the terms of the GNU Lesser General Public +License as published by the Free Software Foundation; either +version 2.1 of the License, or (at your option) any later version. + +This library is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +Lesser General Public License for more details. + +You should have received a copy of the GNU Lesser General Public +License along with this library; if not, write to the Free Software +Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA +*/ + +#include "qmlwebsockets_plugin.h" + +#include + +void QmlWebsocket_plugin::registerTypes(const char *uri) +{ + Q_ASSERT(uri == QLatin1String("Qt.Playground.WebSockets")); + + int major = 1; + int minor = 0; + + // @uri Qt.Playground.WebSockets + + qmlRegisterType(uri, major, minor, "WebSocket"); +} diff --git a/src/imports/qmlwebsockets/qmlwebsockets_plugin.h b/src/imports/qmlwebsockets/qmlwebsockets_plugin.h new file mode 100644 index 0000000..cdb805f --- /dev/null +++ b/src/imports/qmlwebsockets/qmlwebsockets_plugin.h @@ -0,0 +1,40 @@ +/* +QWebSockets implements the WebSocket protocol as defined in RFC 6455. +Copyright (C) 2013 Kurt Pattyn (pattyn.kurt@gmail.com) + +This library is free software; you can redistribute it and/or +modify it under the terms of the GNU Lesser General Public +License as published by the Free Software Foundation; either +version 2.1 of the License, or (at your option) any later version. + +This library is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +Lesser General Public License for more details. + +You should have received a copy of the GNU Lesser General Public +License along with this library; if not, write to the Free Software +Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA +*/ + +#ifndef QMLWEBSOCKET_PLUGIN_H +#define QMLWEBSOCKET_PLUGIN_H + +#include + +#include "qqmlwebsocket.h" + +QT_BEGIN_NAMESPACE + +class QmlWebsocket_plugin : public QQmlExtensionPlugin +{ + Q_OBJECT + Q_PLUGIN_METADATA(IID "org.qt-project.Qt.QQmlExtensionInterface") + +public: + void registerTypes(const char *uri); +}; + +QT_END_NAMESPACE + +#endif // QMLWEBSOCKET_PLUGIN_H diff --git a/src/imports/qmlwebsockets/qqmlwebsocket.cpp b/src/imports/qmlwebsockets/qqmlwebsocket.cpp new file mode 100644 index 0000000..72b1810 --- /dev/null +++ b/src/imports/qmlwebsockets/qqmlwebsocket.cpp @@ -0,0 +1,35 @@ +/* +QWebSockets implements the WebSocket protocol as defined in RFC 6455. +Copyright (C) 2013 Kurt Pattyn (pattyn.kurt@gmail.com) + +This library is free software; you can redistribute it and/or +modify it under the terms of the GNU Lesser General Public +License as published by the Free Software Foundation; either +version 2.1 of the License, or (at your option) any later version. + +This library is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +Lesser General Public License for more details. + +You should have received a copy of the GNU Lesser General Public +License along with this library; if not, write to the Free Software +Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA +*/ + +#include "qqmlwebsocket.h" + +QQmlWebSocket::QQmlWebSocket(QObject *parent) : + QObject(parent) +{ +} + +void QQmlWebSocket::classBegin() +{ + +} + +void QQmlWebSocket::componentComplete() +{ + +} diff --git a/src/imports/qmlwebsockets/qqmlwebsocket.h b/src/imports/qmlwebsockets/qqmlwebsocket.h new file mode 100644 index 0000000..9b95c28 --- /dev/null +++ b/src/imports/qmlwebsockets/qqmlwebsocket.h @@ -0,0 +1,40 @@ +/* +QWebSockets implements the WebSocket protocol as defined in RFC 6455. +Copyright (C) 2013 Kurt Pattyn (pattyn.kurt@gmail.com) + +This library is free software; you can redistribute it and/or +modify it under the terms of the GNU Lesser General Public +License as published by the Free Software Foundation; either +version 2.1 of the License, or (at your option) any later version. + +This library is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +Lesser General Public License for more details. + +You should have received a copy of the GNU Lesser General Public +License along with this library; if not, write to the Free Software +Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA +*/ + +#ifndef QQMLWEBSOCKET_H +#define QQMLWEBSOCKET_H + +#include +#include + +class QQmlWebSocket : public QObject, public QQmlParserStatus +{ + Q_OBJECT + Q_DISABLE_COPY(QQmlWebSocket) + Q_INTERFACES(QQmlParserStatus) + +public: + explicit QQmlWebSocket(QObject *parent = 0); + +public: + void classBegin() Q_DECL_OVERRIDE; + void componentComplete() Q_DECL_OVERRIDE; +}; + +#endif // QQMLWEBSOCKET_H -- cgit v1.2.1