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