IAnalyzerEngine *QmlProfilerTool::createEngine(const AnalyzerStartParameters &sp, RunConfiguration *runConfiguration) { QmlProfilerEngine *engine = new QmlProfilerEngine(this, sp, runConfiguration); engine->registerProfilerStateManager(d->m_profilerState); bool isTcpConnection = true; if (runConfiguration) { // Check minimum Qt Version. We cannot really be sure what the Qt version // at runtime is, but guess that the active build configuraiton has been used. QtSupport::QtVersionNumber minimumVersion(4, 7, 4); QtSupport::BaseQtVersion *version = QtSupport::QtKitInformation::qtVersion(runConfiguration->target()->kit()); if (version) { if (version->isValid() && version->qtVersion() < minimumVersion) { int result = QMessageBox::warning(QApplication::activeWindow(), tr("QML Profiler"), tr("The QML profiler requires Qt 4.7.4 or newer.\n" "The Qt version configured in your active build configuration is too old.\n" "Do you want to continue?"), QMessageBox::Yes, QMessageBox::No); if (result == QMessageBox::No) return 0; } } } // FIXME: Check that there's something sensible in sp.connParams if (isTcpConnection) { d->m_profilerConnections->setTcpConnection(sp.connParams.host, sp.connParams.port); } d->m_runConfiguration = runConfiguration; // // Initialize m_projectFinder // QString projectDirectory; if (d->m_runConfiguration) { Project *project = d->m_runConfiguration->target()->project(); projectDirectory = project->projectDirectory(); } populateFileFinder(projectDirectory, sp.sysroot); connect(engine, SIGNAL(processRunning(quint16)), d->m_profilerConnections, SLOT(connectClient(quint16))); connect(d->m_profilerConnections, SIGNAL(connectionFailed()), engine, SLOT(cancelProcess())); return engine; }
IAnalyzerEngine *QmlProfilerTool::createEngine(const AnalyzerStartParameters &sp, RunConfiguration *runConfiguration) { QmlProfilerEngine *engine = new QmlProfilerEngine(this, sp, runConfiguration); engine->registerProfilerStateManager(d->m_profilerState); bool isTcpConnection = true; if (runConfiguration) { // Check minimum Qt Version. We cannot really be sure what the Qt version // at runtime is, but guess that the active build configuraiton has been used. QtSupport::QtVersionNumber minimumVersion(4, 7, 4); if (Qt4ProjectManager::Qt4BuildConfiguration *qt4Config = qobject_cast<Qt4ProjectManager::Qt4BuildConfiguration*>( runConfiguration->target()->activeBuildConfiguration())) { if (qt4Config->qtVersion()->isValid() && qt4Config->qtVersion()->qtVersion() < minimumVersion) { int result = QMessageBox::warning(QApplication::activeWindow(), tr("QML Profiler"), tr("The QML profiler requires Qt 4.7.4 or newer.\n" "The Qt version configured in your active build configuration is too old.\n" "Do you want to continue?"), QMessageBox::Yes, QMessageBox::No); if (result == QMessageBox::No) return 0; } } // Check whether we should use OST instead of TCP if (Qt4ProjectManager::S60DeployConfiguration *deployConfig = qobject_cast<Qt4ProjectManager::S60DeployConfiguration*>( runConfiguration->target()->activeDeployConfiguration())) { if (deployConfig->communicationChannel() == Qt4ProjectManager::S60DeployConfiguration::CommunicationCodaSerialConnection) { d->m_profilerConnections->setOstConnection(deployConfig->serialPortName()); isTcpConnection = false; } } } // FIXME: Check that there's something sensible in sp.connParams if (isTcpConnection) { d->m_profilerConnections->setTcpConnection(sp.connParams.host, sp.connParams.port); } d->m_runConfiguration = runConfiguration; // // Initialize m_projectFinder // QString projectDirectory; if (d->m_runConfiguration) { Project *project = d->m_runConfiguration->target()->project(); projectDirectory = project->projectDirectory(); } // get files from all the projects in the session QStringList sourceFiles; SessionManager *sessionManager = ProjectExplorerPlugin::instance()->session(); QList<Project *> projects = sessionManager->projects(); if (Project *startupProject = ProjectExplorerPlugin::instance()->startupProject()) { // startup project first projects.removeOne(ProjectExplorerPlugin::instance()->startupProject()); projects.insert(0, startupProject); } foreach (Project *project, projects) sourceFiles << project->files(Project::ExcludeGeneratedFiles); d->m_projectFinder.setProjectDirectory(projectDirectory); d->m_projectFinder.setProjectFiles(sourceFiles); d->m_projectFinder.setSysroot(sp.sysroot); connect(engine, SIGNAL(processRunning(quint16)), d->m_profilerConnections, SLOT(connectClient(quint16))); connect(engine, SIGNAL(finished()), d->m_profilerConnections, SLOT(disconnectClient())); connect(d->m_profilerConnections, SIGNAL(connectionFailed()), engine, SLOT(cancelProcess())); return engine; }