29class QAndroidViewSignalManager :
public QObject
31 using connection_key_t =
int;
34 explicit QAndroidViewSignalManager(QQuickView *view, QObject *parent =
nullptr);
36 int qt_metacall(QMetaObject::Call call,
int methodId,
void **args) override;
38 void removeConnection(connection_key_t signalIdx);
39 bool addConnection(
const QString &signalName,
40 const QJniArray<jclass> &argTypes,
41 const QJniObject &listener,
46
47
48
49
52 QMetaObject::Connection connection;
53 QJniObject listenerObject;
54 QString qmlSignalName;
56 QList<QMetaType::Type> qmlArgumentTypes;
57 bool isPropertySignal;
58 std::optional<
int> qmlPropertyIndex;
62 struct QueuedConnectionInfo
66 QJniArray<jclass> argTypes;
70 bool hasConnection(connection_key_t key)
const;
71 connection_key_t createNewSignalKey()
const;
72 void onViewStatusChanged(QQuickView::Status status);
73 bool queueConnection(
const QString &signalName,
74 const QJniArray<jclass> &argTypes,
75 const QJniObject &listener,
78 QMap<connection_key_t, ConnectionInfo> m_connections;
80 QList<QueuedConnectionInfo> m_queuedConnections;