// Copyright (C) 2016 Klarälvdalens Datakonsult AB, a KDAB Group company, info@kdab.com, author // Milian Wolff // SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only #ifndef QQMLWEBCHANNEL_H #define QQMLWEBCHANNEL_H #include #include #include #include QT_BEGIN_NAMESPACE class QQmlWebChannelPrivate; class QQmlWebChannelAttached; class Q_WEBCHANNELQUICK_EXPORT QQmlWebChannel : public QWebChannel { Q_OBJECT Q_DISABLE_COPY(QQmlWebChannel) Q_PROPERTY(QQmlListProperty transports READ transports) Q_PROPERTY(QQmlListProperty registeredObjects READ registeredObjects) QML_NAMED_ELEMENT(WebChannel) QML_ATTACHED(QQmlWebChannelAttached) QML_ADDED_IN_VERSION(1, 0) public: explicit QQmlWebChannel(QObject *parent = nullptr); virtual ~QQmlWebChannel(); Q_INVOKABLE void registerObjects(const QVariantMap &objects); QQmlListProperty registeredObjects(); QQmlListProperty transports(); static QQmlWebChannelAttached *qmlAttachedProperties(QObject *obj); Q_INVOKABLE void connectTo(QObject *transport); Q_INVOKABLE void disconnectFrom(QObject *transport); private: Q_DECLARE_PRIVATE(QQmlWebChannel) Q_PRIVATE_SLOT(d_func(), void _q_objectIdChanged(const QString &newId)) static void registeredObjects_append(QQmlListProperty *prop, QObject *item); static qsizetype registeredObjects_count(QQmlListProperty *prop); static QObject *registeredObjects_at(QQmlListProperty *prop, qsizetype index); static void registeredObjects_clear(QQmlListProperty *prop); static void transports_append(QQmlListProperty *prop, QObject *item); static qsizetype transports_count(QQmlListProperty *prop); static QObject *transports_at(QQmlListProperty *prop, qsizetype index); static void transports_clear(QQmlListProperty *prop); }; QT_END_NAMESPACE QML_DECLARE_TYPE(QQmlWebChannel) QML_DECLARE_TYPEINFO(QQmlWebChannel, QML_HAS_ATTACHED_PROPERTIES) #endif // QQMLWEBCHANNEL_H