} else {
// pure User Modes
+ IrcUser *ircUser = network()->newIrcUser(params[0]);
+ QString modeString(serverDecode(params[1]));
+ QString addModes;
+ QString removeModes;
+ bool add = false;
+ for(int c = 0; c < modeString.count(); c++) {
+ if(modeString[c] == '+') {
+ add = true;
+ continue;
+ }
+ if(modeString[c] == '-') {
+ add = false;
+ continue;
+ }
+ if(add)
+ addModes += modeString[c];
+ else
+ removeModes += modeString[c];
+ }
+ if(!addModes.isEmpty())
+ ircUser->addUserModes(addModes);
+ if(!removeModes.isEmpty())
+ ircUser->removeUserModes(removeModes);
+
// FIXME: redirect
emit displayMsg(Message::Mode, BufferInfo::StatusBuffer, "", serverDecode(params).join(" "), prefix);
}
int idleSecs = serverDecode(params[1]).toInt();
idleSecs *= -1;
ircuser->setIdleTime(now.addSecs(idleSecs));
- emit displayMsg(Message::Server, BufferInfo::StatusBuffer, "", tr("[Whois] %1 is idling for %2 seconds").arg(ircuser->nick()).arg(ircuser->idleTime().secsTo(now)));
+ if(params.size()>3) {
+ int loginTime = serverDecode(params[2]).toInt();
+ ircuser->setLoginTime(QDateTime::fromTime_t(loginTime));
+ emit displayMsg(Message::Server, BufferInfo::StatusBuffer, "", tr("[Whois] %1 is logged in since %2 seconds").arg(ircuser->nick()).arg(ircuser->loginTime().toString()));
+ }
+ emit displayMsg(Message::Server, BufferInfo::StatusBuffer, "", tr("[Whois] %1 is idling for %2").arg(ircuser->nick()).arg(ircuser->idleTime().secsTo(now)));
+
} else {
emit displayMsg(Message::Server, BufferInfo::StatusBuffer, "", tr("[Whois] idle message: %1").arg(userDecode(nick, params).join(" ")));
}