diff --git a/src/plugins/qt4projectmanager/qt-maemo/maemoconfigtestdialog.cpp b/src/plugins/qt4projectmanager/qt-maemo/maemoconfigtestdialog.cpp index 575da23144e681c412f0bf7044c240ce058caaf7..5f0413f21c703bf7a5bdb59fa6d603f71ff962c6 100644 --- a/src/plugins/qt4projectmanager/qt-maemo/maemoconfigtestdialog.cpp +++ b/src/plugins/qt4projectmanager/qt-maemo/maemoconfigtestdialog.cpp @@ -36,10 +36,12 @@ #include "ui_maemoconfigtestdialog.h" #include "maemodeviceconfigurations.h" +#include "maemoglobal.h" #include <coreplugin/ssh/sshconnection.h> #include <coreplugin/ssh/sshremoteprocess.h> +#include <QtGui/QPalette> #include <QtGui/QPushButton> using namespace Core; @@ -69,7 +71,7 @@ MaemoConfigTestDialog::~MaemoConfigTestDialog() void MaemoConfigTestDialog::startConfigTest() { - if (m_testProcess) + if (m_infoProcess) return; m_ui->testResultEdit->setPlainText(tr("Testing configuration...")); @@ -91,12 +93,12 @@ void MaemoConfigTestDialog::handleConnected() "|sed 's/[[:space:]][[:space:]]*/ /g' " "|cut -d ' ' -f 2,3 |sed 's/~.*//g'"); QString command(sysInfoCmd + " && " + qtInfoCmd); - m_testProcess = m_connection->createRemoteProcess(command.toUtf8()); - connect(m_testProcess.data(), SIGNAL(closed(int)), this, - SLOT(handleProcessFinished(int))); - connect(m_testProcess.data(), SIGNAL(outputAvailable(QByteArray)), this, + m_infoProcess = m_connection->createRemoteProcess(command.toUtf8()); + connect(m_infoProcess.data(), SIGNAL(closed(int)), this, + SLOT(handleInfoProcessFinished(int))); + connect(m_infoProcess.data(), SIGNAL(outputAvailable(QByteArray)), this, SLOT(processSshOutput(QByteArray))); - m_testProcess->start(); + m_infoProcess->start(); } void MaemoConfigTestDialog::handleConnectionError() @@ -111,19 +113,22 @@ void MaemoConfigTestDialog::handleConnectionError() stopConfigTest(); } -void MaemoConfigTestDialog::handleProcessFinished(int exitStatus) +void MaemoConfigTestDialog::handleInfoProcessFinished(int exitStatus) { + if (!m_connection) + return; + Q_ASSERT(exitStatus == SshRemoteProcess::FailedToStart || exitStatus == SshRemoteProcess::KilledBySignal || exitStatus == SshRemoteProcess::ExitedNormally); - if (!m_testProcess) + if (!m_infoProcess) return; if (exitStatus != SshRemoteProcess::ExitedNormally - || m_testProcess->exitCode() != 0) { + || m_infoProcess->exitCode() != 0) { m_ui->testResultEdit->setPlainText(tr("Remote process failed: %1") - .arg(m_testProcess->errorString())); + .arg(m_infoProcess->errorString())); } else { const QString &output = parseTestOutput(); if (!m_qtVersionOk) { @@ -132,13 +137,47 @@ void MaemoConfigTestDialog::handleProcessFinished(int exitStatus) } m_ui->testResultEdit->setPlainText(output); } + + const QByteArray command = "test -x " + MaemoGlobal::remoteSudo().toUtf8(); + m_madDeveloperTestProcess = m_connection->createRemoteProcess(command); + connect(m_madDeveloperTestProcess.data(), SIGNAL(closed(int)), this, + SLOT(handleMadDeveloperTestProcessFinished(int))); + m_madDeveloperTestProcess->start(); +} + +void MaemoConfigTestDialog::handleMadDeveloperTestProcessFinished(int exitStatus) +{ + if (!m_connection) + return; + + Q_ASSERT(exitStatus == SshRemoteProcess::FailedToStart + || exitStatus == SshRemoteProcess::KilledBySignal + || exitStatus == SshRemoteProcess::ExitedNormally); + + if (exitStatus != SshRemoteProcess::ExitedNormally) { + m_ui->testResultEdit->setPlainText(tr("Remote process failed: %1") + .arg(m_madDeveloperTestProcess->errorString())); + } else if (m_madDeveloperTestProcess->exitCode() != 0) { + m_ui->errorLabel->setText(m_ui->errorLabel->text() + + QLatin1String("<br>") + tr("Mad Developer is not installed.<br>" + "You will not be able to deploy to this device!")); + } + if (m_ui->errorLabel->text().isEmpty()) { + QPalette palette = m_ui->errorLabel->palette(); + palette.setColor(m_ui->errorLabel->foregroundRole(), + QColor(QLatin1String("blue"))); + m_ui->errorLabel->setPalette(palette); + m_ui->errorLabel->setText(tr("Device configuration okay.")); + } stopConfigTest(); } void MaemoConfigTestDialog::stopConfigTest() { - if (m_testProcess) - disconnect(m_testProcess.data(), 0, this, 0); + if (m_infoProcess) + disconnect(m_infoProcess.data(), 0, this, 0); + if (m_madDeveloperTestProcess) + disconnect(m_madDeveloperTestProcess.data(), 0, this, 0); if (m_connection) disconnect(m_connection.data(), 0, this, 0); @@ -166,7 +205,6 @@ QString MaemoConfigTestDialog::parseTestOutput() output = tr("Hardware architecture: %1\n").arg(unamePattern.cap(2)); output.append(tr("Kernel version: %1\n").arg(unamePattern.cap(1))); - output.prepend(tr("Device configuration successful.\n")); const QRegExp dkpgPattern(QLatin1String("libqt\\S+ (\\d)\\.(\\d)\\.(\\d)")); index = dkpgPattern.indexIn(m_deviceTestOutput); if (index == -1) { diff --git a/src/plugins/qt4projectmanager/qt-maemo/maemoconfigtestdialog.h b/src/plugins/qt4projectmanager/qt-maemo/maemoconfigtestdialog.h index a6ec321ca2ce1046f8cabe1a3be1d3f2a558bde7..3a1f0f23065340fee1badace313f67caa4179347 100644 --- a/src/plugins/qt4projectmanager/qt-maemo/maemoconfigtestdialog.h +++ b/src/plugins/qt4projectmanager/qt-maemo/maemoconfigtestdialog.h @@ -68,7 +68,8 @@ private slots: void processSshOutput(const QByteArray &output); void handleConnected(); void handleConnectionError(); - void handleProcessFinished(int exitStatus); + void handleInfoProcessFinished(int exitStatus); + void handleMadDeveloperTestProcessFinished(int exitStatus); private: void startConfigTest(); @@ -79,7 +80,8 @@ private: const MaemoDeviceConfig &m_config; QSharedPointer<Core::SshConnection> m_connection; - QSharedPointer<Core::SshRemoteProcess> m_testProcess; + QSharedPointer<Core::SshRemoteProcess> m_infoProcess; + QSharedPointer<Core::SshRemoteProcess> m_madDeveloperTestProcess; QString m_deviceTestOutput; bool m_qtVersionOk; }; diff --git a/src/plugins/qt4projectmanager/qt-maemo/maemoconfigtestdialog.ui b/src/plugins/qt4projectmanager/qt-maemo/maemoconfigtestdialog.ui index 936a37f3b405f023a05237a0da14d4f349bbda6a..798a61aac8c140f2585c81538bd212c218f8edb1 100644 --- a/src/plugins/qt4projectmanager/qt-maemo/maemoconfigtestdialog.ui +++ b/src/plugins/qt4projectmanager/qt-maemo/maemoconfigtestdialog.ui @@ -65,6 +65,9 @@ <property name="text"> <string/> </property> + <property name="textFormat"> + <enum>Qt::RichText</enum> + </property> </widget> </item> <item>