From 31c8b444db993e7a7f7f42b55c0b8894ccd641b3 Mon Sep 17 00:00:00 2001 From: Lasse Holmstedt <lasse.holmstedt@nokia.com> Date: Fri, 27 Aug 2010 13:11:55 +0200 Subject: [PATCH] QML Debugger: Show error messages when connection is lost Related to Qt commit bd521ed56f8e4be7117dc3534c6fded68f7a70c5 --- src/plugins/debugger/qml/qmladapter.cpp | 6 +++--- src/plugins/debugger/qml/qmladapter.h | 4 ++-- src/plugins/debugger/qml/qmlengine.cpp | 9 ++++++--- src/plugins/debugger/qml/qmlengine.h | 2 +- 4 files changed, 12 insertions(+), 9 deletions(-) diff --git a/src/plugins/debugger/qml/qmladapter.cpp b/src/plugins/debugger/qml/qmladapter.cpp index a322b807f09..615dd5aa294 100644 --- a/src/plugins/debugger/qml/qmladapter.cpp +++ b/src/plugins/debugger/qml/qmladapter.cpp @@ -99,7 +99,7 @@ bool QmlAdapter::connectToViewer() connect(m_conn, SIGNAL(stateChanged(QAbstractSocket::SocketState)), SLOT(connectionStateChanged())); connect(m_conn, SIGNAL(error(QAbstractSocket::SocketError)), - SLOT(connectionErrorOccurred())); + SLOT(connectionErrorOccurred(QAbstractSocket::SocketError))); QString address = m_engine.data()->startParameters().qmlServerAddress; QString port = QString::number(m_engine.data()->startParameters().qmlServerPort); @@ -114,14 +114,14 @@ bool QmlAdapter::connectToViewer() return true; } -void QmlAdapter::connectionErrorOccurred() +void QmlAdapter::connectionErrorOccurred(QAbstractSocket::SocketError socketError) { showConnectionErrorMessage(tr("Error: (%1) %2", "%1=error code, %2=error message") .arg(m_conn->error()).arg(m_conn->errorString())); // this is only an error if we are already connected and something goes wrong. if (isConnected()) - emit connectionError(); + emit connectionError(socketError); } void QmlAdapter::connectionStateChanged() diff --git a/src/plugins/debugger/qml/qmladapter.h b/src/plugins/debugger/qml/qmladapter.h index 0bed6588538..c27c6a48d16 100644 --- a/src/plugins/debugger/qml/qmladapter.h +++ b/src/plugins/debugger/qml/qmladapter.h @@ -67,10 +67,10 @@ signals: void connected(); void disconnected(); void connectionStartupFailed(); - void connectionError(); + void connectionError(QAbstractSocket::SocketError socketError); private slots: - void connectionErrorOccurred(); + void connectionErrorOccurred(QAbstractSocket::SocketError socketError); void connectionStateChanged(); void pollInferior(); diff --git a/src/plugins/debugger/qml/qmlengine.cpp b/src/plugins/debugger/qml/qmlengine.cpp index a344ffa7cec..5c135d861f5 100644 --- a/src/plugins/debugger/qml/qmlengine.cpp +++ b/src/plugins/debugger/qml/qmlengine.cpp @@ -166,9 +166,10 @@ void QmlEngine::connectionStartupFailed() notifyEngineRunFailed(); } -void QmlEngine::connectionError() +void QmlEngine::connectionError(QAbstractSocket::SocketError socketError) { - // do nothing for now - only exit the debugger when inferior exits. + if (socketError ==QAbstractSocket::RemoteHostClosedError) + plugin()->showMessage(tr("QML Debugger: Remote host closed connection."), StatusBar); } void QmlEngine::runEngine() @@ -251,13 +252,15 @@ void QmlEngine::shutdownEngine() shutdownEngineAsSlave(); notifyEngineShutdownOk(); + plugin()->showMessage(QString(), StatusBar); } void QmlEngine::setupEngine() { m_adapter->setMaxConnectionAttempts(MaxConnectionAttempts); m_adapter->setConnectionAttemptInterval(ConnectionAttemptDefaultInterval); - connect(m_adapter, SIGNAL(connectionError()), SLOT(connectionError())); + connect(m_adapter, SIGNAL(connectionError(QAbstractSocket::SocketError)), + SLOT(connectionError(QAbstractSocket::SocketError))); connect(m_adapter, SIGNAL(connected()), SLOT(connectionEstablished())); connect(m_adapter, SIGNAL(connectionStartupFailed()), SLOT(connectionStartupFailed())); diff --git a/src/plugins/debugger/qml/qmlengine.h b/src/plugins/debugger/qml/qmlengine.h index 3088af478e7..fee77d95e58 100644 --- a/src/plugins/debugger/qml/qmlengine.h +++ b/src/plugins/debugger/qml/qmlengine.h @@ -122,7 +122,7 @@ signals: private slots: void connectionEstablished(); void connectionStartupFailed(); - void connectionError(); + void connectionError(QAbstractSocket::SocketError error); void slotMessage(QString, bool); void slotAddToOutputWindow(QString, bool); -- GitLab