From f885785564f16c58f04e7644cf29a59675d7ca29 Mon Sep 17 00:00:00 2001 From: hjk Date: Tue, 12 Sep 2017 13:12:30 +0200 Subject: [PATCH] Debugger: Remove use of setRunParameters in Qml attach dialog Change-Id: I90ef143b9c9a0d8606e7d00346c1e508c32a4d88 Reviewed-by: Christian Stenger --- src/plugins/debugger/debuggerconstants.h | 1 + src/plugins/debugger/debuggerplugin.cpp | 42 +++++---------------- src/plugins/debugger/debuggerruncontrol.cpp | 23 ++++++++++- 3 files changed, 33 insertions(+), 33 deletions(-) diff --git a/src/plugins/debugger/debuggerconstants.h b/src/plugins/debugger/debuggerconstants.h index 0cac2e26287..1027c773c11 100644 --- a/src/plugins/debugger/debuggerconstants.h +++ b/src/plugins/debugger/debuggerconstants.h @@ -120,6 +120,7 @@ enum DebuggerStartMode AttachCore, // Attach to a core file AttachToRemoteServer, // Attach to a running gdbserver AttachToRemoteProcess, // Attach to a running remote process + AttachToQmlServer, // Attach to a running QmlServer StartRemoteProcess // Start and attach to a remote process }; diff --git a/src/plugins/debugger/debuggerplugin.cpp b/src/plugins/debugger/debuggerplugin.cpp index 695e86c5f45..e13e212f023 100644 --- a/src/plugins/debugger/debuggerplugin.cpp +++ b/src/plugins/debugger/debuggerplugin.cpp @@ -2145,14 +2145,11 @@ void DebuggerPlugin::getEnginesState(QByteArray *json) const void DebuggerPluginPrivate::attachToQmlPort() { - DebuggerRunParameters rp; AttachToQmlPortDialog dlg(ICore::mainWindow()); const QVariant qmlServerPort = configValue("LastQmlServerPort"); if (qmlServerPort.isValid()) dlg.setPort(qmlServerPort.toInt()); - else if (rp.qmlServer.port() > 0) - dlg.setPort(rp.qmlServer.port()); else dlg.setPort(-1); @@ -2169,38 +2166,19 @@ void DebuggerPluginPrivate::attachToQmlPort() setConfigValue("LastProfile", kit->id().toSetting()); IDevice::ConstPtr device = DeviceKitInformation::device(kit); - if (device) { - QSsh::SshConnectionParameters sshParameters = device->sshParameters(); - rp.remoteChannel = QString("%1:%2").arg(sshParameters.host).arg(sshParameters.port); - QUrl toolControl = device->toolControlChannel(IDevice::QmlControlChannel); - rp.qmlServer.setHost(toolControl.host()); - } - rp.qmlServer.setPort(dlg.port()); - rp.startMode = AttachToRemoteProcess; - rp.closeMode = KillAtClose; - rp.languages = QmlLanguage; - rp.masterEngineType = QmlEngineType; - - // - // get files from all the projects in the session - // - QList projects = SessionManager::projects(); - if (Project *startupProject = SessionManager::startupProject()) { - // startup project first - projects.removeOne(startupProject); - projects.insert(0, startupProject); - } - QStringList sourceFiles; - foreach (Project *project, projects) - sourceFiles << project->files(Project::SourceFiles); - - rp.projectSourceDirectory = - !projects.isEmpty() ? projects.first()->projectDirectory().toString() : QString(); - rp.projectSourceFiles = sourceFiles; + QTC_ASSERT(device, return); auto debugger = DebuggerRunTool::createFromKit(kit); QTC_ASSERT(debugger, return); - debugger->setRunParameters(rp); + + QUrl qmlServer = device->toolControlChannel(IDevice::QmlControlChannel); + qmlServer.setPort(dlg.port()); + debugger->setQmlServer(qmlServer); + + QSsh::SshConnectionParameters sshParameters = device->sshParameters(); + debugger->setRemoteChannel(sshParameters.host, sshParameters.port); + debugger->setStartMode(AttachToQmlServer); + debugger->startRunControl(); } diff --git a/src/plugins/debugger/debuggerruncontrol.cpp b/src/plugins/debugger/debuggerruncontrol.cpp index 7cd3b7aa269..a94217cb6e6 100644 --- a/src/plugins/debugger/debuggerruncontrol.cpp +++ b/src/plugins/debugger/debuggerruncontrol.cpp @@ -187,7 +187,28 @@ void DebuggerRunTool::setBreakOnMainNextTime() void DebuggerRunTool::setStartMode(DebuggerStartMode startMode) { - m_runParameters.startMode = startMode; + if (startMode == AttachToQmlServer) { + m_runParameters.startMode = AttachToRemoteProcess; + m_runParameters.languages = QmlLanguage; + m_runParameters.masterEngineType = QmlEngineType; + m_runParameters.closeMode = KillAtClose; + + // FIXME: This is horribly wrong. + // get files from all the projects in the session + QList projects = SessionManager::projects(); + if (Project *startupProject = SessionManager::startupProject()) { + // startup project first + projects.removeOne(startupProject); + projects.insert(0, startupProject); + } + foreach (Project *project, projects) + m_runParameters.projectSourceFiles.append(project->files(Project::SourceFiles)); + if (!projects.isEmpty()) + m_runParameters.projectSourceDirectory = projects.first()->projectDirectory().toString(); + + } else { + m_runParameters.startMode = startMode; + } } void DebuggerRunTool::setCloseMode(DebuggerCloseMode closeMode)