From 67a80c804797ba432378ad6b81fc82b1aa0d9a1d Mon Sep 17 00:00:00 2001 From: Manuel Nickschas Date: Sat, 28 Nov 2009 22:53:23 +0100 Subject: [PATCH] Improve error message display --- src/client/coreconnection.cpp | 29 +++++++++++++++-------------- src/client/coreconnection.h | 3 ++- src/qtui/mainwin.cpp | 9 +++++---- src/qtui/mainwin.h | 2 +- 4 files changed, 23 insertions(+), 20 deletions(-) diff --git a/src/client/coreconnection.cpp b/src/client/coreconnection.cpp index a982f62a..3d769cc3 100644 --- a/src/client/coreconnection.cpp +++ b/src/client/coreconnection.cpp @@ -120,7 +120,7 @@ void CoreConnection::socketStateChanged(QAbstractSocket::SocketState socketState switch(socketState) { case QAbstractSocket::UnconnectedState: - text = tr("Disconnected."); + text = tr("Disconnected"); break; case QAbstractSocket::HostLookupState: text = tr("Looking up %1...").arg(currentAccount().hostName()); @@ -129,7 +129,7 @@ void CoreConnection::socketStateChanged(QAbstractSocket::SocketState socketState text = tr("Connecting to %1...").arg(currentAccount().hostName()); break; case QAbstractSocket::ConnectedState: - text = tr("Connected to %1.").arg(currentAccount().hostName()); + text = tr("Connected to %1").arg(currentAccount().hostName()); break; case QAbstractSocket::ClosingState: text = tr("Disconnecting from %1...").arg(currentAccount().hostName()); @@ -189,14 +189,14 @@ void CoreConnection::coreHasData() { QVariantMap msg = item.toMap(); if(!msg.contains("MsgType")) { // This core is way too old and does not even speak our init protocol... - emit connectionError(tr("The Quassel Core you try to connect to is too old! Please consider upgrading.")); + emit connectionErrorPopup(tr("The Quassel Core you try to connect to is too old! Please consider upgrading.")); disconnectFromCore(); return; } if(msg["MsgType"] == "ClientInitAck") { clientInitAck(msg); } else if(msg["MsgType"] == "ClientInitReject") { - emit connectionError(msg["Error"].toString()); + emit connectionErrorPopup(msg["Error"].toString()); disconnectFromCore(); return; } else if(msg["MsgType"] == "CoreSetupAck") { @@ -217,8 +217,7 @@ void CoreConnection::coreHasData() { sessionStateReceived(msg["SessionState"].toMap()); break; // this is definitively the last message we process here! } else { - emit connectionError(tr("Invalid data received from core, disconnecting.")); - disconnectFromCore(); + disconnectFromCore(tr("Invalid data received from core")); return; } } @@ -227,7 +226,12 @@ void CoreConnection::coreHasData() { } } -void CoreConnection::disconnectFromCore() { +void CoreConnection::disconnectFromCore(const QString &errorString) { + if(errorString.isEmpty()) + emit connectionError(tr("Disconnected")); + else + emit connectionError(errorString); + Client::signalProxy()->removeAllPeers(); resetConnection(); } @@ -351,7 +355,7 @@ void CoreConnection::clientInitAck(const QVariantMap &msg) { // Core has accepted our version info and sent its own. Let's see if we accept it as well... uint ver = msg["ProtocolVersion"].toUInt(); if(ver < Quassel::buildInfo().clientNeedsProtocol) { - emit connectionError(tr("The Quassel Core you are trying to connect to is too old!
" + emit connectionErrorPopup(tr("The Quassel Core you are trying to connect to is too old!
" "Need at least core/client protocol v%1 to connect.").arg(Quassel::buildInfo().clientNeedsProtocol)); disconnectFromCore(); return; @@ -382,8 +386,7 @@ void CoreConnection::clientInitAck(const QVariantMap &msg) { bool accepted = false; emit handleNoSslInCore(&accepted); if(!accepted) { - emit connectionError(tr("Unencrypted connection canceled")); - disconnectFromCore(); + disconnectFromCore(tr("Unencrypted connection canceled")); return; } s.setAccountValue("ShowNoCoreSslWarning", false); @@ -428,8 +431,7 @@ void CoreConnection::sslErrors() { emit handleSslErrors(socket, &accepted, &permanently); if(!accepted) { - emit connectionError(tr("Unencrypted connection canceled")); - disconnectFromCore(); + disconnectFromCore(tr("Unencrypted connection canceled")); return; } @@ -463,8 +465,7 @@ void CoreConnection::loginToCore(const QString &prevError) { bool valid = false; emit userAuthenticationRequired(&_account, &valid, prevError); // *must* be a synchronous call if(!valid || currentAccount().user().isEmpty() || currentAccount().password().isEmpty()) { - disconnectFromCore(); - emit connectionError(tr("Login canceled")); + disconnectFromCore(tr("Login canceled")); return; } } diff --git a/src/client/coreconnection.h b/src/client/coreconnection.h index 2ef7d1a9..5342636f 100644 --- a/src/client/coreconnection.h +++ b/src/client/coreconnection.h @@ -72,7 +72,7 @@ public: public slots: bool connectToCore(AccountId = 0); void reconnectToCore(); - void disconnectFromCore(); + void disconnectFromCore(const QString &errorString = QString()); signals: void stateChanged(CoreConnection::ConnectionState); @@ -80,6 +80,7 @@ signals: void synchronized(); void connectionError(const QString &errorMsg); + void connectionErrorPopup(const QString &errorMsg); void connectionWarnings(const QStringList &warnings); void connectionMsg(const QString &msg); void disconnected(); diff --git a/src/qtui/mainwin.cpp b/src/qtui/mainwin.cpp index 0b5fe853..63127493 100644 --- a/src/qtui/mainwin.cpp +++ b/src/qtui/mainwin.cpp @@ -160,6 +160,7 @@ void MainWin::init() { SLOT(messagesInserted(const QModelIndex &, int, int))); connect(GraphicalUi::contextMenuActionProvider(), SIGNAL(showChannelList(NetworkId)), SLOT(showChannelList(NetworkId))); connect(GraphicalUi::contextMenuActionProvider(), SIGNAL(showIgnoreList(QString)), SLOT(showIgnoreList(QString))); + connect(Client::coreConnection(), SIGNAL(connectionErrorPopup(QString)), SLOT(handleCoreConnectionError(QString))); connect(Client::coreConnection(), SIGNAL(userAuthenticationRequired(CoreAccount *, bool *, QString)), SLOT(userAuthenticationRequired(CoreAccount *, bool *, QString))); connect(Client::coreConnection(), SIGNAL(handleNoSslInClient(bool*)), SLOT(handleNoSslInClient(bool *))); connect(Client::coreConnection(), SIGNAL(handleNoSslInCore(bool*)), SLOT(handleNoSslInCore(bool *))); @@ -804,10 +805,6 @@ void MainWin::setDisconnectedState() { systemTray()->setState(SystemTray::Inactive); } -void MainWin::startInternalCore() { - -} - void MainWin::userAuthenticationRequired(CoreAccount *account, bool *valid, const QString &errorMessage) { Q_UNUSED(errorMessage) CoreConnectAuthDlg dlg(account, this); @@ -872,6 +869,10 @@ void MainWin::handleSslErrors(const QSslSocket *socket, bool *accepted, bool *pe #endif /* HAVE_SSL */ +void MainWin::handleCoreConnectionError(const QString &error) { + QMessageBox::critical(this, tr("Core Connection Error"), error, QMessageBox::Ok); +} + void MainWin::showCoreConnectionDlg() { CoreConnectDlg dlg(this); if(dlg.exec() == QDialog::Accepted) { diff --git a/src/qtui/mainwin.h b/src/qtui/mainwin.h index 8c9c1ec7..8caa8b3c 100644 --- a/src/qtui/mainwin.h +++ b/src/qtui/mainwin.h @@ -127,7 +127,7 @@ class MainWin #ifdef HAVE_KDE void showShortcutsDlg(); #endif - void startInternalCore(); + void handleCoreConnectionError(const QString &errorMsg); void userAuthenticationRequired(CoreAccount *, bool *valid, const QString &errorMessage); void handleNoSslInClient(bool *accepted); void handleNoSslInCore(bool *accepted); -- 2.20.1