30 if (!file.open(QIODevice::ReadOnly)) {
31 qWarning() <<
"Cannot open file" << fileName <<
"for reading";
35 int currentEventIndex = -1;
37 QHash<
int, SendEventType> types;
39 QXmlStreamReader reader(&file);
40 while (!reader.atEnd()) {
41 if (reader.readNext() != QXmlStreamReader::StartElement)
44 const QStringView name = reader.name();
45 if (name ==
"event"_L1) {
46 currentEventIndex = reader.attributes().value(
"index"_L1).toInt();
47 }
else if (name ==
"mouseEvent"_L1) {
48 types[currentEventIndex] = SendEventType {
49 QQmlProfilerDefinitions::EventType::Mouse,
50 reader.readElementText().toInt(),
52 }
else if (name ==
"keyEvent"_L1) {
53 types[currentEventIndex] = SendEventType {
54 QQmlProfilerDefinitions::EventType::Key,
55 reader.readElementText().toInt(),
57 }
else if (name ==
"range"_L1) {
58 const QXmlStreamAttributes attributes = reader.attributes();
59 const int eventIndex = attributes.value(
"eventIndex"_L1).toInt();
62 const qint64 startTime = attributes.value(
"startTime"_L1).toLongLong();
63 const int inputType = attributes.value(
"type"_L1).toInt();
64 const int data1 = attributes.value(
"data1"_L1).toInt();
65 const int data2 = attributes.value(
"data2"_L1).toInt();
67 QPacket stream(
connection()->currentDataStreamVersion());
68 stream << startTime << QQmlProfilerDefinitions::Message::Event
69 << type.detailType << inputType << data1 << data2;
70 sendMessage(stream.data());
79 const QQmlProfilerEventType &type,
const QQmlProfilerEvent &event)
81 QPacket stream(
connection()->currentDataStreamVersion());
82 stream << event.timestamp() << QQmlProfilerDefinitions::Message::Event
83 << type.detailType() << event.number<quint32>(0) << event.number<quint32>(1)
84 << event.number<quint32>(2);
85 sendMessage(stream.data());