diff --git a/src/plugins/qmlprofiler/qmlprofilertool.cpp b/src/plugins/qmlprofiler/qmlprofilertool.cpp index da6c8c61631da330dc326f8f8bc1ac65b161ede7..5b613f067ca756054b27b80dae4c3b170c7b81d4 100644 --- a/src/plugins/qmlprofiler/qmlprofilertool.cpp +++ b/src/plugins/qmlprofiler/qmlprofilertool.cpp @@ -52,6 +52,7 @@ #include <projectexplorer/projectexplorer.h> #include <projectexplorer/projectexplorerconstants.h> #include <projectexplorer/project.h> +#include <projectexplorer/target.h> #include <texteditor/itexteditor.h> #include <coreplugin/editormanager/editormanager.h> @@ -103,6 +104,8 @@ public: QDeclarativeDebugConnection *m_client; TraceWindow *m_traceWindow; QmlProfilerOutputPaneAdapter *m_outputPaneAdapter; + ProjectExplorer::Project *m_project; + Utils::FileInProjectFinder m_projectFinder; }; QmlProfilerTool::QmlProfilerTool(QObject *parent) @@ -111,6 +114,7 @@ QmlProfilerTool::QmlProfilerTool(QObject *parent) d->m_client = 0; d->m_traceWindow = 0; d->m_outputPaneAdapter = 0; + d->m_project = 0; } QmlProfilerTool::~QmlProfilerTool() @@ -142,6 +146,13 @@ IAnalyzerEngine *QmlProfilerTool::createEngine(ProjectExplorer::RunConfiguration { QmlProfilerEngine *engine = new QmlProfilerEngine(runConfiguration); + d->m_project = runConfiguration->target()->project(); + if (d->m_project) { + d->m_projectFinder.setProjectDirectory(d->m_project->projectDirectory()); + updateProjectFileList(); + connect(d->m_project, SIGNAL(fileListChanged()), this, SLOT(updateProjectFileList())); + } + connect(engine, SIGNAL(processRunning()), this, SLOT(connectClient())); connect(engine, SIGNAL(processTerminated()), this, SLOT(disconnectClient())); connect(engine, SIGNAL(stopRecording()), this, SLOT(stopRecording())); @@ -150,7 +161,6 @@ IAnalyzerEngine *QmlProfilerTool::createEngine(ProjectExplorer::RunConfiguration connect(d->m_traceWindow, SIGNAL(timeChanged(qreal)), this, SLOT(updateTimer(qreal))); return engine; - } void QmlProfilerTool::initialize(ExtensionSystem::IPlugin */*plugin*/) @@ -237,13 +247,7 @@ void QmlProfilerTool::gotoSourceLocation(const QString &fileName, int lineNumber if (lineNumber < 0 || !QFile::exists(QUrl(fileName).toLocalFile())) return; - Utils::FileInProjectFinder m_projectFinder; - ProjectExplorer::Project *m_debugProject; - m_debugProject = ProjectExplorer::ProjectExplorerPlugin::instance()->startupProject(); - m_projectFinder.setProjectDirectory(m_debugProject->projectDirectory()); - - QString projectFileName = m_projectFinder.findFile(fileName); - + QString projectFileName = d->m_projectFinder.findFile(fileName); Core::EditorManager *editorManager = Core::EditorManager::instance(); Core::IEditor *editor = editorManager->openEditor(projectFileName); @@ -262,3 +266,9 @@ void QmlProfilerTool::updateTimer(qreal elapsedSeconds) timeString = QString(" ").left(6-timeString.length()) + timeString; emit setTimeLabel(tr("elapsed: ")+timeString+QLatin1String(" s")); } + +void QmlProfilerTool::updateProjectFileList() +{ + d->m_projectFinder.setProjectFiles( + d->m_project->files(ProjectExplorer::Project::ExcludeGeneratedFiles)); +} diff --git a/src/plugins/qmlprofiler/qmlprofilertool.h b/src/plugins/qmlprofiler/qmlprofilertool.h index 4cf3ecf60590d6f34ecbb58ce8de893ab3e0fd00..09e95e70c5faa077199ccebfc949112776835869 100644 --- a/src/plugins/qmlprofiler/qmlprofilertool.h +++ b/src/plugins/qmlprofiler/qmlprofilertool.h @@ -76,6 +76,9 @@ public: static QString host; static quint16 port; +private slots: + void updateProjectFileList(); + private: class QmlProfilerToolPrivate; QmlProfilerToolPrivate *d;