diff options
Diffstat (limited to 'plugins/qmlprofilerextension/inputeventsmodel.cpp')
-rw-r--r-- | plugins/qmlprofilerextension/inputeventsmodel.cpp | 79 |
1 files changed, 79 insertions, 0 deletions
diff --git a/plugins/qmlprofilerextension/inputeventsmodel.cpp b/plugins/qmlprofilerextension/inputeventsmodel.cpp index 31ad5585c9..8ee322c364 100644 --- a/plugins/qmlprofilerextension/inputeventsmodel.cpp +++ b/plugins/qmlprofilerextension/inputeventsmodel.cpp @@ -43,5 +43,84 @@ quint64 InputEventsModel::features() const return 1 << QmlDebug::ProfileInputEvents; } +int InputEventsModel::selectionId(int index) const +{ + Q_D(const InputEventsModel); + return d->modelManager->qmlModel()->getEventTypes()[range(index).typeId].detailType; +} + +QColor InputEventsModel::color(int index) const +{ + return colorBySelectionId(index); +} + +QVariantList InputEventsModel::labels() const +{ + Q_D(const InputEventsModel); + QVariantList result; + + if (d->expanded && !d->hidden && !isEmpty()) { + { + QVariantMap element; + element.insert(QLatin1String("description"), QVariant(tr("Mouse Events"))); + element.insert(QLatin1String("id"), QVariant(QmlDebug::Mouse)); + result << element; + } + + { + QVariantMap element; + element.insert(QLatin1String("description"), QVariant(tr("Keyboard Events"))); + element.insert(QLatin1String("id"), QVariant(QmlDebug::Key)); + result << element; + } + } + + return result; +} + +QVariantMap InputEventsModel::details(int index) const +{ + QVariantMap result; + result.insert(QLatin1String("displayName"), + selectionId(index) == QmlDebug::Key ? tr("Keyboard Event") : tr("Mouse Event")); + result.insert(QLatin1String("Timestamp"), QmlProfilerBaseModel::formatTime(startTime(index))); + return result; +} + +int InputEventsModel::row(int index) const +{ + if (!expanded()) + return 1; + return selectionId(index) == QmlDebug::Mouse ? 1 : 2; +} + +void InputEventsModel::loadData() +{ + Q_D(InputEventsModel); + clear(); + QmlProfilerDataModel *simpleModel = d->modelManager->qmlModel(); + if (simpleModel->isEmpty()) + return; + + const QVector<QmlProfilerDataModel::QmlEventTypeData> &types = simpleModel->getEventTypes(); + foreach (const QmlProfilerDataModel::QmlEventData &event, simpleModel->getEvents()) { + const QmlProfilerDataModel::QmlEventTypeData &type = types[event.typeIndex]; + if (!accepted(type)) + continue; + insert(event.startTime, 0, event.typeIndex); + d->modelManager->modelProxyCountUpdated(d->modelId, count(), + simpleModel->getEvents().count()); + } + d->collapsedRowCount = 2; + d->expandedRowCount = 3; + d->modelManager->modelProxyCountUpdated(d->modelId, 1, 1); +} + +bool InputEventsModel::accepted(const QmlProfilerDataModel::QmlEventTypeData &event) const +{ + return AbstractTimelineModel::accepted(event) && + (event.detailType == QmlDebug::Mouse || event.detailType == QmlDebug::Key); +} + } } |