diff options
| author | 2015-10-19 00:40:49 -0400 | |
|---|---|---|
| committer | 2015-10-19 00:40:49 -0400 | |
| commit | 06fb76557c87aea7363c592f8ffde6b80bd5b980 (patch) | |
| tree | d5c12047aa30e7891a1629aa29f694839782b818 | |
| parent | Merge pull request #1678 from blindsighttf2/cleanup (diff) | |
| download | KVIrc-06fb76557c87aea7363c592f8ffde6b80bd5b980.tar.gz KVIrc-06fb76557c87aea7363c592f8ffde6b80bd5b980.tar.bz2 KVIrc-06fb76557c87aea7363c592f8ffde6b80bd5b980.zip | |
context: Fix #1682
Add a message when the client is currently delaying to recconect
to a lost link. Set the action icon to connected during the reconnect
delay period.
| -rw-r--r-- | src/kvirc/kernel/KviCoreActions.cpp | 2 | ||||
| -rw-r--r-- | src/kvirc/kernel/KviIrcContext.cpp | 15 | ||||
| -rw-r--r-- | src/kvirc/kernel/KviIrcContext.h | 3 | ||||
| -rw-r--r-- | src/kvirc/ui/KviConsoleWindow.cpp | 3 | ||||
| -rw-r--r-- | src/modules/context/libkvicontext.cpp | 3 |
5 files changed, 20 insertions, 6 deletions
diff --git a/src/kvirc/kernel/KviCoreActions.cpp b/src/kvirc/kernel/KviCoreActions.cpp index 4e15e7fed..8aabec733 100644 --- a/src/kvirc/kernel/KviCoreActions.cpp +++ b/src/kvirc/kernel/KviCoreActions.cpp @@ -599,6 +599,7 @@ void KviConnectAction::activeContextStateChanged() p = g_pIconManager->getBigIcon(KVI_BIGICON_DISCONNECTED); txt = m_szConnectString; break; + case KviIrcContext::PendingRecon: case KviIrcContext::Connecting: case KviIrcContext::LoggingIn: p = g_pIconManager->getBigIcon(KVI_BIGICON_CONNECTING); @@ -662,6 +663,7 @@ bool KviConnectAction::addToPopupMenu(QMenu *p) if(!m_szKeySequence.isEmpty())t += '\t' + m_szKeySequence; p->addAction(t,this,SLOT(activate())); break; + case KviIrcContext::PendingRecon: case KviIrcContext::Connecting: case KviIrcContext::LoggingIn: t = m_szAbortConnectionString; diff --git a/src/kvirc/kernel/KviIrcContext.cpp b/src/kvirc/kernel/KviIrcContext.cpp index 14a3857c0..4f44fe964 100644 --- a/src/kvirc/kernel/KviIrcContext.cpp +++ b/src/kvirc/kernel/KviIrcContext.cpp @@ -346,7 +346,7 @@ void KviIrcContext::setState(State eState) emit stateChanged(); - if(eState == KviIrcContext::Idle)destroyConnection(); + if(eState == KviIrcContext::Idle || eState == KviIrcContext::PendingRecon)destroyConnection(); m_pConsole->updateCaption(); } @@ -383,6 +383,9 @@ void KviIrcContext::connectButtonClicked() m_pConsole->outputNoFmt(KVI_OUT_SYSTEMERROR, __tr2qs("Reconnect attempt aborted")); + if(m_eState == KviIrcContext::PendingRecon) + setState(Idle); + return; } @@ -649,7 +652,7 @@ void KviIrcContext::connectionFailed(int iError) setAsynchronousConnectionData(d); beginAsynchronousConnect(1000 * KVI_OPTION_UINT(KviOption_uintAutoReconnectDelay)); - setState(Idle); // destroy the actual connection + setState(PendingRecon); // destroy the actual connection return; } else { @@ -766,8 +769,6 @@ void KviIrcContext::connectionTerminated() connection()->keepQueriesOpenAfterDisconnect(); } - setState(Idle); - bool bStopOutput = false; bStopOutput = KVS_TRIGGER_EVENT_0_HALTED(KviEvent_OnIRCConnectionTerminated,m_pConsole); @@ -784,6 +785,8 @@ void KviIrcContext::connectionTerminated() if(bUnexpectedDisconnect && KVI_OPTION_BOOL(KviOption_boolAutoReconnectOnUnexpectedDisconnect)) { + setState(PendingRecon); + //m_uConnectAttemptCount = 1; if(!_OUTPUT_MUTE) m_pConsole->output(KVI_OUT_CONNECTION,__tr2qs("The connection terminated unexpectedly. Trying to reconnect...")); @@ -803,6 +806,8 @@ void KviIrcContext::connectionTerminated() setAsynchronousConnectionData(d); beginAsynchronousConnect(1000 * KVI_OPTION_UINT(KviOption_uintAutoReconnectDelay)); + } else { + setState(Idle); } } @@ -879,6 +884,7 @@ void KviIrcContext::terminateConnectionRequest(bool bForce, const QString & szQu } } break; + case PendingRecon: case Connecting: case LoggingIn: // was waiting for connection or login, just abort it: it will trigger an error anyway @@ -907,4 +913,3 @@ void KviIrcContext::timerEvent(QTimerEvent * e) if(m_pConnection) m_pConnection->heartbeat(tNow); } - diff --git a/src/kvirc/kernel/KviIrcContext.h b/src/kvirc/kernel/KviIrcContext.h index 603fdf892..a5137aa0c 100644 --- a/src/kvirc/kernel/KviIrcContext.h +++ b/src/kvirc/kernel/KviIrcContext.h @@ -74,12 +74,13 @@ public: enum State { Idle, // connection() == 0 + PendingRecon, // connection() == 0 Connecting, // connection() != 0 LoggingIn, // connection() != 0 Connected // connection() != 0 }; protected: - KviConsoleWindow * m_pConsole; // shallow, never null + KviConsoleWindow * m_pConsole; // shallow, never null KviIrcConnection * m_pConnection; unsigned int m_uId; // this irc context id diff --git a/src/kvirc/ui/KviConsoleWindow.cpp b/src/kvirc/ui/KviConsoleWindow.cpp index 8caac1aed..0a4010ab4 100644 --- a/src/kvirc/ui/KviConsoleWindow.cpp +++ b/src/kvirc/ui/KviConsoleWindow.cpp @@ -1119,6 +1119,9 @@ void KviConsoleWindow::fillStatusString() case KviIrcContext::Idle: m_szStatusString = __tr2qs("No connection"); break; + case KviIrcContext::PendingRecon: + m_szStatusString = __tr2qs("Waiting to reconnect..."); + break; case KviIrcContext::Connecting: m_szStatusString = __tr2qs("Connection in progress..."); break; diff --git a/src/modules/context/libkvicontext.cpp b/src/modules/context/libkvicontext.cpp index a55c60b94..b307e3527 100644 --- a/src/modules/context/libkvicontext.cpp +++ b/src/modules/context/libkvicontext.cpp @@ -434,6 +434,9 @@ static bool context_kvs_fnc_state(KviKvsModuleFunctionCall * c) case KviIrcContext::Idle: c->returnValue()->setString(QString("idle")); break; + case KviIrcContext::PendingRecon: + c->returnValue()->setString(QString("pending")); + break; case KviIrcContext::Connecting: c->returnValue()->setString(QString("connecting")); break; |
