displaying own quit message
authorMarcus Eggenberger <egs@quassel-irc.org>
Wed, 11 Feb 2009 13:48:04 +0000 (14:48 +0100)
committerMarcus Eggenberger <egs@quassel-irc.org>
Wed, 11 Feb 2009 13:48:04 +0000 (14:48 +0100)
src/core/corenetwork.cpp
src/core/corenetwork.h
src/core/userinputhandler.cpp

index 7d62b76..b9e82e4 100644 (file)
@@ -137,6 +137,10 @@ void CoreNetwork::connectToIrc(bool reconnecting) {
     qWarning() << "Invalid identity configures, ignoring connect request!";
     return;
   }
+
+  // cleaning up old quit reason
+  _quitReason.clear();
+
   // use a random server?
   if(useRandomServer()) {
     _lastUsedServerIndex = qrand() % serverList().size();
@@ -202,7 +206,11 @@ void CoreNetwork::disconnectFromIrc(bool requested, const QString &reason) {
     socketDisconnected();
   } else {
     // quit gracefully if it's user requested quit
-    userInputHandler()->issueQuit(reason);
+    if(reason.isEmpty() && identityPtr())
+      _quitReason = identityPtr()->quitReason();
+    else
+      _quitReason = reason;
+    userInputHandler()->issueQuit(_quitReason);
     // the irc server has 10 seconds to close the socket
     _socketCloseTimer.start(10000);
   }
@@ -337,7 +345,7 @@ void CoreNetwork::socketDisconnected() {
   IrcUser *me_ = me();
   if(me_) {
     foreach(QString channel, me_->channels())
-      emit displayMsg(Message::Quit, BufferInfo::ChannelBuffer, channel, "", me_->hostmask());
+      emit displayMsg(Message::Quit, BufferInfo::ChannelBuffer, channel, _quitReason, me_->hostmask());
   }
 
   setConnected(false);
index 6c6f978..8303b25 100644 (file)
@@ -167,6 +167,7 @@ private:
    * it is needed to determine whether or not the connection needs to be
    * in the automatic session restore. */
   bool _quitRequested;
+  QString _quitReason;
 
   bool _previousConnectionAttemptFailed;
   int _lastUsedServerIndex;
index 722c3fc..e0449be 100644 (file)
@@ -321,12 +321,7 @@ void UserInputHandler::handleQuit(const BufferInfo &bufferInfo, const QString &m
 }
 
 void UserInputHandler::issueQuit(const QString &reason) {
-  QString quitReason;
-  if(reason.isEmpty())
-    quitReason = network()->identityPtr()->quitReason();
-  else
-    quitReason = reason;
-  emit putCmd("QUIT", serverEncode(quitReason));
+  emit putCmd("QUIT", serverEncode(reason));
 }
 
 void UserInputHandler::handleQuote(const BufferInfo &bufferInfo, const QString &msg) {