diff --git a/src/plugins/qt4projectmanager/qt-maemo/maemodebugsupport.cpp b/src/plugins/qt4projectmanager/qt-maemo/maemodebugsupport.cpp index bc3938f883865824e4b270f08616570a5afbb700..d67de573fdc180d59782295bb36f61f0988a6ef6 100644 --- a/src/plugins/qt4projectmanager/qt-maemo/maemodebugsupport.cpp +++ b/src/plugins/qt4projectmanager/qt-maemo/maemodebugsupport.cpp @@ -63,11 +63,13 @@ RunControl *MaemoDebugSupport::createDebugRunControl(MaemoRunConfiguration *runC DebuggerStartParameters params; const MaemoDeviceConfig &devConf = runConfig->deviceConfig(); - if (runConfig->useQmlDebugger()) { + const MaemoRunConfiguration::DebuggingType debuggingType + = runConfig->debuggingType(); + if (debuggingType != MaemoRunConfiguration::DebugCppOnly) { params.qmlServerAddress = runConfig->deviceConfig().server.host; params.qmlServerPort = qmlServerPort(runConfig); } - if (runConfig->useCppDebugger()) { + if (debuggingType != MaemoRunConfiguration::DebugQmlOnly) { params.processArgs = runConfig->arguments(); params.sysRoot = runConfig->sysRoot(); params.toolChainType = ToolChain::GCC_MAEMO; @@ -113,7 +115,7 @@ MaemoDebugSupport::MaemoDebugSupport(MaemoRunConfiguration *runConfig, : QObject(runControl), m_runControl(runControl), m_runConfig(runConfig), m_deviceConfig(m_runConfig->deviceConfig()), m_runner(new MaemoSshRunner(this, m_runConfig, true)), - m_qmlOnlyDebugging(m_runConfig->useQmlDebugger() && !m_runConfig->useCppDebugger()) + m_qmlOnlyDebugging(m_runConfig->debuggingType() == MaemoRunConfiguration::DebugQmlOnly) { connect(m_runControl, SIGNAL(engineRequestSetup()), this, SLOT(handleAdapterSetupRequested())); @@ -305,7 +307,7 @@ int MaemoDebugSupport::gdbServerPort(const MaemoRunConfiguration *rc) int MaemoDebugSupport::qmlServerPort(const MaemoRunConfiguration *rc) { MaemoPortList portList = rc->freePorts(); - if (rc->useCppDebugger()) + if (rc->debuggingType() != MaemoRunConfiguration::DebugQmlOnly) portList.getNext(); return portList.getNext(); } @@ -314,7 +316,7 @@ QString MaemoDebugSupport::environment(const MaemoRunConfiguration *rc) { QList<Utils::EnvironmentItem> env = rc->userEnvironmentChanges(); // FIXME: this must use command line argument instead: -qmljsdebugger=port:1234. - if (rc->useQmlDebugger()) { + if (rc->debuggingType() != MaemoRunConfiguration::DebugCppOnly) { // env << Utils::EnvironmentItem(QLatin1String(Debugger::Constants::E_QML_DEBUG_SERVER_PORT), // QString::number(qmlServerPort(rc))); } diff --git a/src/plugins/qt4projectmanager/qt-maemo/maemorunconfiguration.cpp b/src/plugins/qt4projectmanager/qt-maemo/maemorunconfiguration.cpp index 724d2d191e03e275ecb1e81f2a86b0a7228a83cc..18e734f26568aed4225b97d769a8c6af59867372 100644 --- a/src/plugins/qt4projectmanager/qt-maemo/maemorunconfiguration.cpp +++ b/src/plugins/qt4projectmanager/qt-maemo/maemorunconfiguration.cpp @@ -304,6 +304,30 @@ void MaemoRunConfiguration::setArguments(const QStringList &args) m_arguments = args; } +MaemoRunConfiguration::DebuggingType MaemoRunConfiguration::debuggingType() const +{ + if (!toolchain() || !toolchain()->allowsQmlDebugging()) + return DebugCppOnly; + if (useCppDebugger()) { + if (useQmlDebugger()) + return DebugCppAndQml; + return DebugCppOnly; + } + return DebugQmlOnly; +} + +int MaemoRunConfiguration::portsUsedByDebuggers() const +{ + switch (debuggingType()) { + case DebugCppOnly: + case DebugQmlOnly: + return 1; + case DebugCppAndQml: + default: + return 2; + } +} + void MaemoRunConfiguration::updateDeviceConfigurations() { emit deviceConfigurationChanged(target()); diff --git a/src/plugins/qt4projectmanager/qt-maemo/maemorunconfiguration.h b/src/plugins/qt4projectmanager/qt-maemo/maemorunconfiguration.h index b25848b92a4168c9c6ee3051cdd5d00106a9e3f5..42e328359446189104aa6be6c16999c16d015bf5 100644 --- a/src/plugins/qt4projectmanager/qt-maemo/maemorunconfiguration.h +++ b/src/plugins/qt4projectmanager/qt-maemo/maemorunconfiguration.h @@ -71,6 +71,8 @@ public: SystemEnvironmentBase = 1 }; + enum DebuggingType { DebugCppOnly, DebugQmlOnly, DebugCppAndQml }; + MaemoRunConfiguration(Qt4Target *parent, const QString &proFilePath); virtual ~MaemoRunConfiguration(); @@ -96,6 +98,7 @@ public: bool useRemoteGdb() const; void setUseRemoteGdb(bool useRemoteGdb) { m_useRemoteGdb = useRemoteGdb; } void updateFactoryState() { emit isEnabledChanged(true); } + DebuggingType debuggingType() const; const QString gdbCmd() const; const QString dumperLib() const; @@ -116,7 +119,7 @@ public: Utils::Environment systemEnvironment() const; void setSystemEnvironment(const Utils::Environment &environment); - int portsUsedByDebuggers() const { return useCppDebugger() + useQmlDebugger(); } + int portsUsedByDebuggers() const; signals: void deviceConfigurationChanged(ProjectExplorer::Target *target); diff --git a/src/plugins/qt4projectmanager/qt-maemo/maemorunconfigurationwidget.cpp b/src/plugins/qt4projectmanager/qt-maemo/maemorunconfigurationwidget.cpp index 8d2279bf9ce98a13f8a4adf2b423cba5b065cd9a..c2f8e57e624fd2672c22c227bf7fbc3a316b4cf7 100644 --- a/src/plugins/qt4projectmanager/qt-maemo/maemorunconfigurationwidget.cpp +++ b/src/plugins/qt4projectmanager/qt-maemo/maemorunconfigurationwidget.cpp @@ -126,10 +126,11 @@ void MaemoRunConfigurationWidget::addGenericWidgets(QVBoxLayout *mainLayout) m_debugCppOnlyButton = new QRadioButton(tr("C++ only")); m_debugQmlOnlyButton = new QRadioButton(tr("QML only")); m_debugCppAndQmlButton = new QRadioButton(tr("C++ and QML")); + m_debuggingLanguagesLabel = new QLabel(tr("Debugging type:")); debugButtonsLayout->addWidget(m_debugCppOnlyButton); debugButtonsLayout->addWidget(m_debugQmlOnlyButton); debugButtonsLayout->addWidget(m_debugCppAndQmlButton); - formLayout->addRow(tr("Debugging type:"), debugButtonsLayout); + formLayout->addRow(m_debuggingLanguagesLabel, debugButtonsLayout); if (m_runConfiguration->useCppDebugger()) { if (m_runConfiguration->useQmlDebugger()) m_debugCppAndQmlButton->setChecked(true); @@ -304,6 +305,11 @@ void MaemoRunConfigurationWidget::handleToolchainChanged() const bool remoteMountsAvailable = toolChain->allowsRemoteMounts(); m_debugDetailsContainer->setVisible(remoteMountsAvailable); m_mountDetailsContainer->setVisible(remoteMountsAvailable); + const bool qmlDebuggingAvailable = toolChain->allowsQmlDebugging(); + m_debuggingLanguagesLabel->setVisible(qmlDebuggingAvailable); + m_debugCppOnlyButton->setVisible(qmlDebuggingAvailable); + m_debugQmlOnlyButton->setVisible(qmlDebuggingAvailable); + m_debugCppAndQmlButton->setVisible(qmlDebuggingAvailable); } m_runConfiguration->updateFactoryState(); } diff --git a/src/plugins/qt4projectmanager/qt-maemo/maemorunconfigurationwidget.h b/src/plugins/qt4projectmanager/qt-maemo/maemorunconfigurationwidget.h index 2fb92edefdeaffe8635d334ad3d371fc96d725f5..be686ac00008381186c56f11e9b08c3c843ae998 100644 --- a/src/plugins/qt4projectmanager/qt-maemo/maemorunconfigurationwidget.h +++ b/src/plugins/qt4projectmanager/qt-maemo/maemorunconfigurationwidget.h @@ -107,6 +107,7 @@ private: QLabel *m_localExecutableLabel; QLabel *m_remoteExecutableLabel; QLabel *m_devConfLabel; + QLabel *m_debuggingLanguagesLabel; QRadioButton *m_debugCppOnlyButton; QRadioButton *m_debugQmlOnlyButton; QRadioButton *m_debugCppAndQmlButton; diff --git a/src/plugins/qt4projectmanager/qt-maemo/maemosshrunner.cpp b/src/plugins/qt4projectmanager/qt-maemo/maemosshrunner.cpp index 15d1f432e4ac26199d4d2336151a4f71dd902311..16db4f4386977cb5f78b4a880c591a21466ce9ae 100644 --- a/src/plugins/qt4projectmanager/qt-maemo/maemosshrunner.cpp +++ b/src/plugins/qt4projectmanager/qt-maemo/maemosshrunner.cpp @@ -193,9 +193,12 @@ void MaemoSshRunner::handleUnmounted() m_mounter->resetMountSpecifications(); MaemoPortList portList = m_devConfig.freePorts(); if (m_debugging) { // gdbserver and QML inspector need one port each. - if (m_runConfig->useCppDebugger() && !m_runConfig->useRemoteGdb()) + MaemoRunConfiguration::DebuggingType debuggingType + = m_runConfig->debuggingType(); + if (debuggingType != MaemoRunConfiguration::DebugQmlOnly + && !m_runConfig->useRemoteGdb()) portList.getNext(); - if (m_runConfig->useQmlDebugger()) + if (debuggingType != MaemoRunConfiguration::DebugCppOnly) portList.getNext(); } m_mounter->setToolchain(m_runConfig->toolchain()); diff --git a/src/plugins/qt4projectmanager/qt-maemo/maemotoolchain.h b/src/plugins/qt4projectmanager/qt-maemo/maemotoolchain.h index 7589b1e24256df194fc8075b7c75cb424b4948a5..edda2c25d71e326815e1e7d87066a3d732e21445 100644 --- a/src/plugins/qt4projectmanager/qt-maemo/maemotoolchain.h +++ b/src/plugins/qt4projectmanager/qt-maemo/maemotoolchain.h @@ -56,6 +56,7 @@ public: MaemoVersion version() const; bool allowsRemoteMounts() const { return version() == Maemo5; } bool allowsPackagingDisabling() const { return version() == Maemo5; } + bool allowsQmlDebugging() const { return version() == Maemo6; } protected: bool equals(const ToolChain *other) const;