diff --git a/src/plugins/qt4projectmanager/qt-s60/qt-s60-todo.txt b/src/plugins/qt4projectmanager/qt-s60/qt-s60-todo.txt index 81636f56bd1e1a689a68bf1586da8b53e2d079fe..938360904369b01f1ed103413dbd482e44b282d5 100644 --- a/src/plugins/qt4projectmanager/qt-s60/qt-s60-todo.txt +++ b/src/plugins/qt4projectmanager/qt-s60/qt-s60-todo.txt @@ -26,7 +26,6 @@ * auto-create run configurations the first time s60 qt is selected. * Run on device - * Finish runner when application exits * passphrase for signing * time stamp of copied sisx is ridiculous * maybe don't copy the sisx all the time diff --git a/src/plugins/qt4projectmanager/qt-s60/s60devicerunconfiguration.cpp b/src/plugins/qt4projectmanager/qt-s60/s60devicerunconfiguration.cpp index 3f9456991e00d405f8014bfec1d582cd1ed729a9..6caec355e164cd9e54d382f0b68b6c51a2ea0a01 100644 --- a/src/plugins/qt4projectmanager/qt-s60/s60devicerunconfiguration.cpp +++ b/src/plugins/qt4projectmanager/qt-s60/s60devicerunconfiguration.cpp @@ -52,6 +52,7 @@ S60DeviceRunConfiguration::S60DeviceRunConfiguration(Project *project, const QSt : RunConfiguration(project), m_proFilePath(proFilePath), m_cachedTargetInformationValid(false), + m_serialPortName("COM5"), m_signingMode(SignSelf) { if (!m_proFilePath.isEmpty()) @@ -95,6 +96,7 @@ void S60DeviceRunConfiguration::save(PersistentSettingsWriter &writer) const writer.saveValue("SigningMode", (int)m_signingMode); writer.saveValue("CustomSignaturePath", m_customSignaturePath); writer.saveValue("CustomKeyPath", m_customKeyPath); + writer.saveValue("SerialPortName", m_serialPortName); RunConfiguration::save(writer); } @@ -106,6 +108,17 @@ void S60DeviceRunConfiguration::restore(const PersistentSettingsReader &reader) m_signingMode = (SigningMode)reader.restoreValue("SigningMode").toInt(); m_customSignaturePath = reader.restoreValue("CustomSignaturePath").toString(); m_customKeyPath = reader.restoreValue("CustomKeyPath").toString(); + m_serialPortName = reader.restoreValue("SerialPortName").toString().trimmed(); +} + +QString S60DeviceRunConfiguration::serialPortName() const +{ + return m_serialPortName; +} + +void S60DeviceRunConfiguration::setSerialPortName(const QString &name) +{ + m_serialPortName = name.trimmed(); } QString S60DeviceRunConfiguration::targetName() const @@ -251,6 +264,12 @@ S60DeviceRunConfigurationWidget::S60DeviceRunConfigurationWidget(S60DeviceRunCon m_sisxFileLabel = new QLabel(m_runConfiguration->basePackageFilePath() + ".sisx"); formLayout->addRow(tr("Install File:"), m_sisxFileLabel); + QComboBox *serialPorts = new QComboBox; + serialPorts->addItems(QStringList() << "COM1" << "COM2" << "COM3" << "COM4" << "COM5" << "COM6" << "COM7" << "COM8" << "COM9"); + serialPorts->setCurrentIndex(m_runConfiguration->serialPortName().mid(3).toInt()-1); + connect(serialPorts, SIGNAL(activated(QString)), this, SLOT(setSerialPort(QString))); + formLayout->addRow(tr("Device on Serial Port:"), serialPorts); + QWidget *signatureWidget = new QWidget(); QVBoxLayout *layout = new QVBoxLayout(); signatureWidget->setLayout(layout); @@ -312,6 +331,11 @@ void S60DeviceRunConfigurationWidget::updateTargetInformation() m_sisxFileLabel->setText(m_runConfiguration->basePackageFilePath() + ".sisx"); } +void S60DeviceRunConfigurationWidget::setSerialPort(const QString &portName) +{ + m_runConfiguration->setSerialPortName(portName.trimmed()); +} + void S60DeviceRunConfigurationWidget::selfSignToggled(bool toggle) { if (toggle) @@ -440,6 +464,7 @@ void S60DeviceRunControl::start() Qt4Project *project = qobject_cast<Qt4Project *>(rc->project()); + m_serialPortName = rc->serialPortName(); m_targetName = rc->targetName(); m_baseFileName = rc->basePackageFilePath(); m_workingDirectory = QFileInfo(m_baseFileName).absolutePath(); @@ -541,15 +566,21 @@ void S60DeviceRunControl::signsisProcessFinished() connect(m_adapter, SIGNAL(startingApplication()), this, SLOT(printStartingNotice())); connect(m_adapter, SIGNAL(applicationRunning(uint)), this, SLOT(printRunNotice(uint))); - //TODO com selection, sisx destination and file path user definable - m_adapter->setTrkServerName("COM5"); + //TODO sisx destination and file path user definable + m_adapter->setTrkServerName(m_serialPortName); const QString copySrc(m_baseFileName + ".sisx"); const QString copyDst = QString("C:\\Data\\%1.sisx").arg(QFileInfo(m_baseFileName).fileName()); const QString runFileName = QString("C:\\sys\\bin\\%1.exe").arg(m_targetName); m_adapter->setCopyFileName(copySrc, copyDst); m_adapter->setInstallFileName(copyDst); m_adapter->setFileName(runFileName); - m_adapter->startServer(); + if (!m_adapter->startServer()) { + delete m_adapter; + m_adapter = 0; + error(this, tr("Could not connect to phone on port %1. " + "Check if the phone is connected and if it runs the TRK application.").arg(m_serialPortName)); + emit finished(); + } } void S60DeviceRunControl::printCopyingNotice() @@ -594,4 +625,5 @@ void S60DeviceRunControl::processFailed(const QString &program, QProcess::Proces errorString = tr("Some error has occurred while running %1."); } error(this, errorString.arg(program)); + emit finished(); } diff --git a/src/plugins/qt4projectmanager/qt-s60/s60devicerunconfiguration.h b/src/plugins/qt4projectmanager/qt-s60/s60devicerunconfiguration.h index 0c2198f4061eef76739d8fd05efc8abbfe2e687c..f68d8a3d610c8cbf01794f08a0c59ef3a7efe306 100644 --- a/src/plugins/qt4projectmanager/qt-s60/s60devicerunconfiguration.h +++ b/src/plugins/qt4projectmanager/qt-s60/s60devicerunconfiguration.h @@ -60,6 +60,8 @@ public: void save(ProjectExplorer::PersistentSettingsWriter &writer) const; void restore(const ProjectExplorer::PersistentSettingsReader &reader); + QString serialPortName() const; + void setSerialPortName(const QString &name); QString targetName() const; QString basePackageFilePath() const; SigningMode signingMode() const; @@ -82,6 +84,7 @@ private: QString m_targetName; QString m_baseFileName; bool m_cachedTargetInformationValid; + QString m_serialPortName; SigningMode m_signingMode; QString m_customSignaturePath; QString m_customKeyPath; @@ -97,6 +100,7 @@ public: private slots: void nameEdited(const QString &text); void updateTargetInformation(); + void setSerialPort(const QString &portName); void selfSignToggled(bool toggle); void customSignatureToggled(bool toggle); void signaturePathChanged(const QString &path); @@ -158,6 +162,7 @@ private slots: private: void processFailed(const QString &program, QProcess::ProcessError errorCode); + QString m_serialPortName; QString m_targetName; QString m_baseFileName; QString m_workingDirectory; diff --git a/tests/manual/trk/launcher.cpp b/tests/manual/trk/launcher.cpp index 83d7648e985b4e41dc08d86aeb0919e86deefaac..f1796da7075f13b84cbd5a1ff1546e31ef6080a6 100644 --- a/tests/manual/trk/launcher.cpp +++ b/tests/manual/trk/launcher.cpp @@ -88,11 +88,10 @@ Adapter::~Adapter() bool Adapter::startServer() { if (!openTrkPort(m_trkServerName)) { - qDebug("Unable to connect to TRK server"); + logMessage("Unable to connect to TRK server"); return false; } m_timerId = startTimer(100); - qDebug("Connecting"); sendTrkInitialPing(); sendTrkMessage(TrkConnect); // Connect sendTrkMessage(TrkSupported, CB(handleSupportMask));