From 8a89a8bd8e80b87259035ee0ea2cd25812a3a5f7 Mon Sep 17 00:00:00 2001 From: Christian Kandeler <christian.kandeler@nokia.com> Date: Tue, 30 Nov 2010 10:55:44 +0100 Subject: [PATCH] Maemo: Make SSH connection error messages a bit more helpful. Task-number: QTCREATORBUG-3225 --- .../qt-maemo/maemodeploystep.cpp | 13 +++++++----- .../qt-maemo/maemoglobal.cpp | 20 +++++++++++++++++++ .../qt4projectmanager/qt-maemo/maemoglobal.h | 6 ++++++ .../qt-maemo/maemosshrunner.cpp | 7 ++++--- 4 files changed, 38 insertions(+), 8 deletions(-) diff --git a/src/plugins/qt4projectmanager/qt-maemo/maemodeploystep.cpp b/src/plugins/qt4projectmanager/qt-maemo/maemodeploystep.cpp index c3de383e26d..4b37b77ffea 100644 --- a/src/plugins/qt4projectmanager/qt-maemo/maemodeploystep.cpp +++ b/src/plugins/qt4projectmanager/qt-maemo/maemodeploystep.cpp @@ -335,11 +335,14 @@ void MaemoDeployStep::start() void MaemoDeployStep::handleConnectionFailure() { - if (m_state != Inactive) { - raiseError(tr("Could not connect to host: %1") - .arg(m_connection->errorString())); - setState(Inactive); - } + if (m_state == Inactive) + return; + + const QString errorMsg = m_state == Connecting + ? MaemoGlobal::failedToConnectToServerMessage(m_connection, deviceConfig()) + : tr("Connection error: %1").arg(m_connection->errorString()); + raiseError(errorMsg); + setState(Inactive); } void MaemoDeployStep::handleSftpChannelInitialized() diff --git a/src/plugins/qt4projectmanager/qt-maemo/maemoglobal.cpp b/src/plugins/qt4projectmanager/qt-maemo/maemoglobal.cpp index f88ba0825e4..318f5e1bca9 100644 --- a/src/plugins/qt4projectmanager/qt-maemo/maemoglobal.cpp +++ b/src/plugins/qt4projectmanager/qt-maemo/maemoglobal.cpp @@ -29,6 +29,9 @@ #include "maemoglobal.h" +#include "maemodeviceconfigurations.h" + +#include <coreplugin/ssh/sshconnection.h> #include <utils/environment.h> #include <QtCore/QCoreApplication> @@ -79,6 +82,23 @@ QString MaemoGlobal::remoteEnvironment(const QList<Utils::EnvironmentItem> &list return env.mid(0, env.size() - 1); } +QString MaemoGlobal::failedToConnectToServerMessage(const Core::SshConnection::Ptr &connection, + const MaemoDeviceConfig &deviceConfig) +{ + QString errorMsg = TR("Could not connect to host: %1") + .arg(connection->errorString()); + + if (deviceConfig.type == MaemoDeviceConfig::Simulator) { + if (connection->errorState() == Core::SshTimeoutError + || connection->errorState() == Core::SshSocketError) { + errorMsg += TR("\nDid you start Qemu?"); + } + } else if (connection->errorState() == Core::SshTimeoutError) { + errorMsg += TR("\nIs the device connected and set up for network access?"); + } + return errorMsg; +} + bool MaemoGlobal::removeRecursively(const QString &filePath, QString &error) { QFileInfo fileInfo(filePath); diff --git a/src/plugins/qt4projectmanager/qt-maemo/maemoglobal.h b/src/plugins/qt4projectmanager/qt-maemo/maemoglobal.h index 24f8cd2cf31..d86ff743343 100644 --- a/src/plugins/qt4projectmanager/qt-maemo/maemoglobal.h +++ b/src/plugins/qt4projectmanager/qt-maemo/maemoglobal.h @@ -37,6 +37,7 @@ #include <projectexplorer/projectexplorerconstants.h> #include <QtCore/QList> +#include <QtCore/QSharedPointer> #define ASSERT_STATE_GENERIC(State, expected, actual) \ MaemoGlobal::assertState<State>(expected, actual, Q_FUNC_INFO) @@ -46,8 +47,11 @@ class QProcess; class QString; QT_END_NAMESPACE +namespace Core { class SshConnection; } + namespace Qt4ProjectManager { namespace Internal { +class MaemoDeviceConfig; class MaemoGlobal { @@ -57,6 +61,8 @@ public: static QString remoteCommandPrefix(const QString &commandFilePath); static QString remoteEnvironment(const QList<Utils::EnvironmentItem> &list); static QString remoteSourceProfilesCommand(); + static QString failedToConnectToServerMessage(const QSharedPointer<Core::SshConnection> &connection, + const MaemoDeviceConfig &deviceConfig); static bool removeRecursively(const QString &filePath, QString &error); static void callMaddeShellScript(QProcess &proc, const QString &maddeRoot, diff --git a/src/plugins/qt4projectmanager/qt-maemo/maemosshrunner.cpp b/src/plugins/qt4projectmanager/qt-maemo/maemosshrunner.cpp index ec9f3720f9d..8e4e0fca979 100644 --- a/src/plugins/qt4projectmanager/qt-maemo/maemosshrunner.cpp +++ b/src/plugins/qt4projectmanager/qt-maemo/maemosshrunner.cpp @@ -152,9 +152,10 @@ void MaemoSshRunner::handleConnectionFailure() if (m_state == Inactive) qWarning("Unexpected state %d in %s.", m_state, Q_FUNC_INFO); - const QString errorTemplate = m_state == Connecting - ? tr("Could not connect to host: %1") : tr("Connection failed: %1"); - emitError(errorTemplate.arg(m_connection->errorString())); + const QString errorMsg = m_state == Connecting + ? MaemoGlobal::failedToConnectToServerMessage(m_connection, m_devConfig) + : tr("Connection error: %1").arg(m_connection->errorString()); + emitError(errorMsg); } void MaemoSshRunner::cleanup() -- GitLab