5#include <private/qqmldebugconnection_p.h>
23 ds >> data.url >> data.lineNumber >> data.columnNumber >> data.idString
24 >> data.objectName >> data.objectType >> data.objectId >> data.contextId
42 ds >> type >> data.name >> data.value >> data.valueTypeName
49 QQmlDebugClient(*
new QQmlEngineDebugClientPrivate(connection))
60 const QQmlEngineDebugPropertyReference &property,
bool *success)
64 if (state() == QQmlDebugClient::Enabled) {
66 QPacket ds(connection()->currentDataStreamVersion());
67 ds << QByteArray(
"WATCH_PROPERTY") << id << property.objectDebugId
68 << property.name.toUtf8();
69 sendMessage(ds.data());
79 qWarning(
"QQmlEngineDebugClient::addWatch(): Not implemented");
89 if (state() == QQmlDebugClient::Enabled) {
91 QPacket ds(connection()->currentDataStreamVersion());
92 ds << QByteArray(
"WATCH_EXPR_OBJECT") << id << object.debugId << expr;
93 sendMessage(ds.data());
104 if (state() == QQmlDebugClient::Enabled) {
106 QPacket ds(connection()->currentDataStreamVersion());
107 ds << QByteArray(
"WATCH_OBJECT") << id << object.debugId;
108 sendMessage(ds.data());
118 qWarning(
"QQmlEngineDebugClient::addWatch(): Not implemented");
125 if (state() == QQmlDebugClient::Enabled) {
126 QPacket ds(connection()->currentDataStreamVersion());
127 ds << QByteArray(
"NO_WATCH") << id;
128 sendMessage(ds.data());
135 Q_D(QQmlEngineDebugClient);
139 if (state() == QQmlDebugClient::Enabled) {
141 QPacket ds(connection()->currentDataStreamVersion());
142 ds << QByteArray(
"LIST_ENGINES") << id;
143 sendMessage(ds.data());
152 Q_D(QQmlEngineDebugClient);
153 d->rootContext = QQmlEngineDebugContextReference();
156 if (state() == QQmlDebugClient::Enabled && engine.debugId != -1) {
158 QPacket ds(connection()->currentDataStreamVersion());
159 ds << QByteArray(
"LIST_OBJECTS") << id << engine.debugId;
160 sendMessage(ds.data());
169 Q_D(QQmlEngineDebugClient);
170 d->object = QQmlEngineDebugObjectReference();
173 if (state() == QQmlDebugClient::Enabled && object.debugId != -1) {
175 QPacket ds(connection()->currentDataStreamVersion());
176 ds << QByteArray(
"FETCH_OBJECT") << id << object.debugId <<
false <<
true;
177 sendMessage(ds.data());
184 const QString &file, qint32 lineNumber, qint32 columnNumber,
bool *success)
186 Q_D(QQmlEngineDebugClient);
190 if (state() == QQmlDebugClient::Enabled) {
192 QPacket ds(connection()->currentDataStreamVersion());
193 ds << QByteArray(
"FETCH_OBJECTS_FOR_LOCATION") << id << file << lineNumber
194 << columnNumber <<
false <<
true;
195 sendMessage(ds.data());
204 Q_D(QQmlEngineDebugClient);
205 d->object = QQmlEngineDebugObjectReference();
208 if (state() == QQmlDebugClient::Enabled && object.debugId != -1) {
210 QPacket ds(connection()->currentDataStreamVersion());
211 ds << QByteArray(
"FETCH_OBJECT") << id << object.debugId <<
true <<
true;
212 sendMessage(ds.data());
219 qint32 lineNumber, qint32 columnNumber,
bool *success)
221 Q_D(QQmlEngineDebugClient);
225 if (state() == QQmlDebugClient::Enabled) {
227 QPacket ds(connection()->currentDataStreamVersion());
228 ds << QByteArray(
"FETCH_OBJECTS_FOR_LOCATION") << id << file << lineNumber
229 << columnNumber <<
true <<
true;
230 sendMessage(ds.data());
237 qint32 objectDebugId,
const QString &expr,
bool *success)
239 Q_D(QQmlEngineDebugClient);
240 d->exprResult = QVariant();
243 if (state() == QQmlDebugClient::Enabled) {
245 QPacket ds(connection()->currentDataStreamVersion());
246 ds << QByteArray(
"EVAL_EXPRESSION") << id << objectDebugId << expr
247 << engines()[0].debugId;
248 sendMessage(ds.data());
255 qint32 objectDebugId,
const QString &expr,
bool *success)
257 Q_D(QQmlEngineDebugClient);
258 d->exprResult = QVariant();
261 if (state() == QQmlDebugClient::Enabled) {
263 QPacket ds(connection()->currentDataStreamVersion());
264 ds << QByteArray(
"EVAL_EXPRESSION") << id << objectDebugId << expr;
265 sendMessage(ds.data());
272 qint32 objectDebugId,
273 const QString &propertyName,
274 const QVariant &bindingExpression,
276 const QString &source, qint32 line,
281 if (state() == QQmlDebugClient::Enabled && objectDebugId != -1) {
283 QPacket ds(connection()->currentDataStreamVersion());
284 ds << QByteArray(
"SET_BINDING") << id << objectDebugId << propertyName
285 << bindingExpression << isLiteralValue << source << line;
286 sendMessage(ds.data());
293 qint32 objectDebugId,
294 const QString &propertyName,
299 if (state() == QQmlDebugClient::Enabled && objectDebugId != -1) {
301 QPacket ds(connection()->currentDataStreamVersion());
302 ds << QByteArray(
"RESET_BINDING") << id << objectDebugId << propertyName;
303 sendMessage(ds.data());
310 qint32 objectDebugId,
const QString &methodName,
311 const QString &methodBody,
bool *success)
315 if (state() == QQmlDebugClient::Enabled && objectDebugId != -1) {
317 QPacket ds(connection()->currentDataStreamVersion());
318 ds << QByteArray(
"SET_METHOD_BODY") << id << objectDebugId
319 << methodName << methodBody;
320 sendMessage(ds.data());
332 o.debugId = data.objectId;
333 o.className = data.objectType;
334 o.idString = data.idString;
335 o.name = data.objectName;
336 o.source.url = data.url;
337 o.source.lineNumber = data.lineNumber;
338 o.source.columnNumber = data.columnNumber;
339 o.contextDebugId = data.contextId;
346 ds >> childCount >> recur;
348 for (qint32 ii = 0; ii < childCount; ++ii) {
350 decode(ds, o.children.last(), !recur);
356 for (qint32 ii = 0; ii < propCount; ++ii) {
359 QQmlEngineDebugPropertyReference prop;
360 prop.objectDebugId = o.debugId;
361 prop.name = data.name;
362 prop.binding = data.binding;
364 prop.valueTypeName = data.valueTypeName;
370 prop.value = data.value;
376 obj.name = data.value.toString();
377 obj.className = prop.valueTypeName;
378 prop.value = QVariant::fromValue(obj);
384 o.properties << prop;
389 QList<QQmlEngineDebugObjectReference> &o,
394 for (qint32 i = 0; i < count; i++) {
396 decode(ds, obj, simple);
403 Q_D(
const QQmlEngineDebugClient);
409 Q_D(
const QQmlEngineDebugClient);
410 return d->rootContext;
415 Q_D(
const QQmlEngineDebugClient);
421 Q_D(
const QQmlEngineDebugClient);
427 Q_D(
const QQmlEngineDebugClient);
428 return d->exprResult;
433 Q_D(
const QQmlEngineDebugClient);
440 ds >> c.name >> c.debugId;
445 for (qint32 ii = 0; ii < contextCount; ++ii) {
447 decode(ds, c.contexts.last());
453 for (qint32 ii = 0; ii < objectCount; ++ii) {
455 decode(ds, obj,
true);
457 obj.contextDebugId = c.debugId;
464 Q_D(QQmlEngineDebugClient);
466 QPacket ds(connection()->currentDataStreamVersion(), data);
470 ds >> type >> queryId;
474 if (type ==
"LIST_ENGINES_R") {
479 for (qint32 ii = 0; ii < count; ++ii) {
485 }
else if (type ==
"LIST_OBJECTS_R") {
487 decode(ds, d->rootContext);
489 }
else if (type ==
"FETCH_OBJECT_R") {
491 decode(ds, d->object,
false);
493 }
else if (type ==
"FETCH_OBJECTS_FOR_LOCATION_R") {
495 decode(ds, d->objects,
false);
497 }
else if (type ==
"EVAL_EXPRESSION_R") {;
500 }
else if (type ==
"WATCH_PROPERTY_R") {
503 }
else if (type ==
"WATCH_OBJECT_R") {
506 }
else if (type ==
"WATCH_EXPR_OBJECT_R") {
509 }
else if (type ==
"UPDATE_WATCH") {
513 ds >> debugId >> name >> value;
514 emit valueChanged(name, value);
517 }
else if (type ==
"OBJECT_CREATED") {
521 ds >> engineId >> objectId >> parentId;
522 emit newObject(objectId);
524 }
else if (type ==
"SET_BINDING_R") {
526 }
else if (type ==
"RESET_BINDING_R") {
528 }
else if (type ==
"SET_METHOD_BODY_R") {
530 }
else if (type ==
"NO_WATCH_R") {
539 Q_D(QQmlEngineDebugClient);
545#include "moc_qqmlenginedebugclient_p.cpp"
qint32 addWatch(const QQmlEngineDebugContextReference &, const QString &, bool *success)
qint32 resetBindingForObject(qint32 objectDebugId, const QString &propertyName, bool *success)
void decode(QPacket &ds, QQmlEngineDebugContextReference &)
qint32 queryObjectsForLocationRecursive(const QString &file, qint32 lineNumber, qint32 columnNumber, bool *success)
qint32 queryExpressionResultBC(qint32 objectDebugId, const QString &expr, bool *success)
QList< QQmlEngineDebugObjectReference > objects() const
qint32 addWatch(const QQmlEngineDebugFileReference &, bool *success)
qint32 queryExpressionResult(qint32 objectDebugId, const QString &expr, bool *success)
qint32 queryRootContexts(const QQmlEngineDebugEngineReference &, bool *success)
qint32 addWatch(const QQmlEngineDebugObjectReference &, const QString &, bool *success)
void removeWatch(qint32 watch, bool *success)
qint32 queryAvailableEngines(bool *success)
void decode(QPacket &ds, QList< QQmlEngineDebugObjectReference > &o, bool simple)
qint32 addWatch(const QQmlEngineDebugObjectReference &, bool *success)
qint32 setMethodBody(qint32 objectDebugId, const QString &methodName, const QString &methodBody, bool *success)
qint32 addWatch(const QQmlEngineDebugPropertyReference &, bool *success)
qint32 setBindingForObject(qint32 objectDebugId, const QString &propertyName, const QVariant &bindingExpression, bool isLiteralValue, const QString &source, qint32 line, bool *success)
qint32 queryObjectRecursive(const QQmlEngineDebugObjectReference &, bool *success)
QQmlEngineDebugContextReference rootContext() const
void messageReceived(const QByteArray &) override
QQmlEngineDebugObjectReference object() const
qint32 queryObject(const QQmlEngineDebugObjectReference &, bool *success)
QList< QQmlEngineDebugEngineReference > engines() const
QVariant resultExpr() const
qint32 queryObjectsForLocation(const QString &file, qint32 lineNumber, qint32 columnNumber, bool *success)
void decode(QPacket &ds, QQmlEngineDebugObjectReference &, bool simple)
QPacket & operator>>(QPacket &ds, QQmlObjectProperty &data)
QPacket & operator>>(QPacket &ds, QQmlObjectData &data)