void QTestOutputWidget::gotoLocation(QModelIndex index) { if (!index.isValid()) return; if (m_resultsView->model() == m_filterModel) index = m_filterModel->mapToSource(index); if (!index.isValid()) return; const QAbstractItemModel *m = index.model(); QModelIndex parent = index.parent(); if (!parent.isValid()) return; QModelIndex functionIndex = parent; QModelIndex failureIndex = index; QModelIndex grandParent = parent.parent(); if (grandParent.isValid()) { functionIndex = grandParent; failureIndex = parent; } if (!functionIndex.isValid()) return; QModelIndex locationIndex = m->index(failureIndex.row(), 1, functionIndex); if (!locationIndex.isValid()) return; QVariant tag = locationIndex.data(Qt::UserRole + 1); if (tag.type() != QVariant::UserType || tag.userType() != qMetaTypeId<QTestLocation>()) return; QTestLocation loc = tag.value<QTestLocation>(); Core::ICore::instance()->editorManager()->openEditor(loc.file); Core::EditorInterface *edtIface = Core::ICore::instance()->editorManager()->currentEditor(); if (!edtIface) return; TextEditor::ITextEditor *editor = qobject_cast<TextEditor::ITextEditor*>(edtIface->qObject()); if (!editor) return; editor->gotoLine(loc.line.toInt()); }
void QmlProfilerTool::gotoSourceLocation(const QString &fileUrl, int lineNumber) { if (lineNumber < 0 || fileUrl.isEmpty()) return; #if 0 const QString fileName = QUrl(fileUrl).toLocalFile(); const QString projectFileName = d->m_projectFinder.findFile(fileName); Core::EditorManager *editorManager = Core::EditorManager::instance(); Core::IEditor *editor = editorManager->openEditor(projectFileName); TextEditor::ITextEditor *textEditor = qobject_cast<TextEditor::ITextEditor*>(editor); if (textEditor) { editorManager->addCurrentPositionToNavigationHistory(); textEditor->gotoLine(lineNumber); textEditor->widget()->setFocus(); } #endif }