From eef3d91ea183f4c0c455ce25e7fcf18ecd6d798b Mon Sep 17 00:00:00 2001 From: Christiaan Janssen <christiaan.janssen@nokia.com> Date: Wed, 14 Dec 2011 14:30:37 +0100 Subject: [PATCH] QmlProfiler: linking JS events with QML events Change-Id: Id2f37caef0c62fa8fa830fed8f46dcbb0a565cdb Reviewed-by: Kai Koehne <kai.koehne@nokia.com> --- .../qmlprofiler/qmlprofilereventview.cpp | 17 +++++++++++++++++ src/plugins/qmlprofiler/qmlprofilereventview.h | 2 ++ src/plugins/qmlprofiler/qmlprofilertool.cpp | 3 +++ 3 files changed, 22 insertions(+) diff --git a/src/plugins/qmlprofiler/qmlprofilereventview.cpp b/src/plugins/qmlprofiler/qmlprofilereventview.cpp index a99c1531cc3..918b52572c8 100644 --- a/src/plugins/qmlprofiler/qmlprofilereventview.cpp +++ b/src/plugins/qmlprofiler/qmlprofilereventview.cpp @@ -181,6 +181,11 @@ void QmlProfilerEventsWidget::updateSelectedEvent(int eventId) const m_eventTree->selectEvent(eventId); } +void QmlProfilerEventsWidget::selectBySourceLocation(const QString &filename, int line) +{ + m_eventTree->selectEventByLocation(filename, line); +} + bool QmlProfilerEventsWidget::hasGlobalStats() const { return m_globalStatsEnabled; @@ -589,6 +594,18 @@ void QmlProfilerEventsMainView::selectEvent(int eventId) } } +void QmlProfilerEventsMainView::selectEventByLocation(const QString &filename, int line) +{ + for (int i=0; i<d->m_model->rowCount(); i++) { + QStandardItem *infoItem = d->m_model->item(i, 0); + if (currentIndex() != d->m_model->indexFromItem(infoItem) && infoItem->data(FilenameRole).toString() == filename && infoItem->data(LineRole).toInt() == line) { + setCurrentIndex(d->m_model->indexFromItem(infoItem)); + jumpToItem(currentIndex()); + return; + } + } +} + QModelIndex QmlProfilerEventsMainView::selectedItem() const { QModelIndexList sel = selectedIndexes(); diff --git a/src/plugins/qmlprofiler/qmlprofilereventview.h b/src/plugins/qmlprofiler/qmlprofilereventview.h index 48f37f2d5d1..93ae9479fb5 100644 --- a/src/plugins/qmlprofiler/qmlprofilereventview.h +++ b/src/plugins/qmlprofiler/qmlprofilereventview.h @@ -79,6 +79,7 @@ signals: public slots: void updateSelectedEvent(int eventId) const; + void selectBySourceLocation(const QString &filename, int line); protected: void contextMenuEvent(QContextMenuEvent *ev); @@ -149,6 +150,7 @@ public slots: void clear(); void jumpToItem(const QModelIndex &index); void selectEvent(int eventId); + void selectEventByLocation(const QString &filename, int line); void buildModel(); private: diff --git a/src/plugins/qmlprofiler/qmlprofilertool.cpp b/src/plugins/qmlprofiler/qmlprofilertool.cpp index b44651242ba..694049913b7 100644 --- a/src/plugins/qmlprofiler/qmlprofilertool.cpp +++ b/src/plugins/qmlprofiler/qmlprofilertool.cpp @@ -388,6 +388,9 @@ QWidget *QmlProfilerTool::createWidgets() connect(d->m_v8profilerView, SIGNAL(gotoSourceLocation(QString,int)), this, SLOT(gotoSourceLocation(QString,int))); connect(d->m_v8profilerView, SIGNAL(contextMenuRequested(QPoint)), this, SLOT(showContextMenu(QPoint))); + connect(d->m_v8profilerView, SIGNAL(gotoSourceLocation(QString,int)), d->m_eventsView, SLOT(selectBySourceLocation(QString,int))); + connect(d->m_eventsView, SIGNAL(gotoSourceLocation(QString,int)), d->m_v8profilerView, SLOT(selectBySourceLocation(QString,int))); + QDockWidget *eventsDock = AnalyzerManager::createDockWidget (this, tr("Events"), d->m_eventsView, Qt::BottomDockWidgetArea); QDockWidget *timelineDock = AnalyzerManager::createDockWidget -- GitLab