28class QAndroidViewSignalManager :
public QObject
30 using connection_key_t =
int;
33 explicit QAndroidViewSignalManager(QQuickView *view, QObject *parent =
nullptr);
35 int qt_metacall(QMetaObject::Call call,
int methodId,
void **args) override;
37 void removeConnection(connection_key_t signalIdx);
38 bool addConnection(
const QString &signalName,
39 const QJniArray<jclass> &argTypes,
40 const QJniObject &listener,
45
46
47
48
51 QMetaObject::Connection connection;
52 QJniObject listenerObject;
53 QString qmlSignalName;
55 QList<QMetaType::Type> qmlArgumentTypes;
56 bool isPropertySignal;
57 std::optional<
int> qmlPropertyIndex;
61 struct QueuedConnectionInfo
65 QJniArray<jclass> argTypes;
69 bool hasConnection(connection_key_t key)
const;
70 connection_key_t createNewSignalKey()
const;
71 void onViewStatusChanged(QQuickView::Status status);
72 bool queueConnection(
const QString &signalName,
73 const QJniArray<jclass> &argTypes,
74 const QJniObject &listener,
77 QMap<connection_key_t, ConnectionInfo> m_connections;
79 QVector<QueuedConnectionInfo> m_queuedConnections;