Parse idle and signon time when there is no IrcUser, fixes #1008
authorBas Pape <baspape@gmail.com>
Tue, 27 Jul 2010 15:31:46 +0000 (17:31 +0200)
committerManuel Nickschas <sputnick@quassel-irc.org>
Wed, 11 Aug 2010 16:08:22 +0000 (18:08 +0200)
src/core/ircserverhandler.cpp

index 32a40f0..84c6a19 100644 (file)
@@ -886,7 +886,16 @@ void IrcServerHandler::handle317(const QString &prefix, const QList<QByteArray>
     emit displayMsg(Message::Server, BufferInfo::StatusBuffer, "", tr("[Whois] %1 is idling for %2 (%3)").arg(ircuser->nick()).arg(secondsToString(ircuser->idleTime().secsTo(now))).arg(ircuser->idleTime().toString()));
 
   } else {
     emit displayMsg(Message::Server, BufferInfo::StatusBuffer, "", tr("[Whois] %1 is idling for %2 (%3)").arg(ircuser->nick()).arg(secondsToString(ircuser->idleTime().secsTo(now))).arg(ircuser->idleTime().toString()));
 
   } else {
-    emit displayMsg(Message::Server, BufferInfo::StatusBuffer, "", tr("[Whois] idle message: %1").arg(userDecode(nick, params).join(" ")));
+    QDateTime now = QDateTime::currentDateTime();
+    int idleSecs = serverDecode(params[1]).toInt();
+    idleSecs *= -1;
+    QDateTime idleSince = now.addSecs(idleSecs);
+    if (params.size() > 3) { // we have a signon time
+      int loginTime = serverDecode(params[2]).toInt();
+      QDateTime datetime = QDateTime::fromTime_t(loginTime);
+      emit displayMsg(Message::Server, BufferInfo::StatusBuffer, "", tr("[Whois] %1 is logged in since %2").arg(nick).arg(datetime.toString()));
+    }
+    emit displayMsg(Message::Server, BufferInfo::StatusBuffer, "", tr("[Whois] %1 is idling for %2 (%3)").arg(nick).arg(secondsToString(idleSince.secsTo(now))).arg(idleSince.toString()));
   }
 }
 
   }
 }