//******************************/
// IRC SERVER HANDLER
//******************************/
+void IrcServerHandler::handleInvite(const QString &prefix, const QList<QByteArray> ¶ms) {
+ if(!checkParamCount("IrcServerHandler::handleInvite()", params, 2))
+ return;
+// qDebug() << "IrcServerHandler::handleInvite()" << prefix << params;
+
+ IrcUser *ircuser = network()->updateNickFromMask(prefix);
+ if(!ircuser) {
+ return;
+ }
+
+ QString channel = serverDecode(params[1]);
+
+ emit displayMsg(Message::Invite, BufferInfo::StatusBuffer, "", tr("%1 invited you to channel %2").arg(ircuser->nick()).arg(channel));
+}
+
void IrcServerHandler::handleJoin(const QString &prefix, const QList<QByteArray> ¶ms) {
if(!checkParamCount("IrcServerHandler::handleJoin()", params, 1))
return;
QString value = rawSupport.section("=", 1);
network()->addSupport(key, value);
}
+
+ /* determine our prefixes here to get an accurate result */
+ network()->determinePrefixes();
}
/* RPL_UMODEIS - "<user_modes> [<user_mode_params>]" */
ircuser->setRealName(serverDecode(params.last()));
emit displayMsg(Message::Server, BufferInfo::StatusBuffer, "", tr("[Whois] %1 is %2 (%3)") .arg(ircuser->nick()).arg(ircuser->hostmask()).arg(ircuser->realName()));
} else {
- emit displayMsg(Message::Server, BufferInfo::StatusBuffer, "", tr("[Whois] %1 is %2 (%3)") .arg(serverDecode(params[1])).arg(serverDecode(params[2])).arg(serverDecode(params.last())));
+ QString host = QString("%1!%2@%3").arg(serverDecode(params[0])).arg(serverDecode(params[1])).arg(serverDecode(params[2]));
+ emit displayMsg(Message::Server, BufferInfo::StatusBuffer, "", tr("[Whois] %1 is %2 (%3)") .arg(serverDecode(params[0])).arg(host).arg(serverDecode(params.last())));
}
}
QString nick = serverDecode(params[0]);
IrcUser *ircuser = network()->ircUser(nick);
+
+ QDateTime now = QDateTime::currentDateTime();
+ int idleSecs = serverDecode(params[1]).toInt();
+ idleSecs *= -1;
+
if(ircuser) {
- QDateTime now = QDateTime::currentDateTime();
- int idleSecs = serverDecode(params[1]).toInt();
- idleSecs *= -1;
ircuser->setIdleTime(now.addSecs(idleSecs));
if(params.size() > 3) { // if we have more then 3 params we have the above mentioned "real life" situation
int loginTime = serverDecode(params[2]).toInt();
emit displayMsg(Message::Server, BufferInfo::StatusBuffer, "", tr("[Whois] %1 is logged in since %2").arg(ircuser->nick()).arg(ircuser->loginTime().toString()));
}
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 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()));
}
}
emit displayMsg(Message::Server, BufferInfo::ChannelBuffer, channel, tr("Channel %1 created on %2").arg(channel, time.toString()));
}
+/* RPL_WHOISACCOUNT: "<nick> <account> :is authed as */
+void IrcServerHandler::handle330(const QString &prefix, const QList<QByteArray> ¶ms) {
+ Q_UNUSED(prefix);
+ if(!checkParamCount("IrcServerHandler::handle330()", params, 3))
+ return;
+
+ QString nick = serverDecode(params[0]);
+ QString account = serverDecode(params[1]);
+
+ emit displayMsg(Message::Server, BufferInfo::StatusBuffer, "", tr("[Whois] %1 is authed as %2").arg(nick).arg(account));
+}
+
/* RPL_NOTOPIC */
void IrcServerHandler::handle331(const QString &prefix, const QList<QByteArray> ¶ms) {
Q_UNUSED(prefix);
tr("Topic set by %1 on %2") .arg(serverDecode(params[1]), QDateTime::fromTime_t(channelDecode(channel, params[2]).toUInt()).toString()));
}
+/* RPL_INVITING - "<nick> <channel>*/
+void IrcServerHandler::handle341(const QString &prefix, const QList<QByteArray> ¶ms) {
+ Q_UNUSED(prefix);
+ if(!checkParamCount("IrcServerHandler::handle341()", params, 2))
+ return;
+
+ QString nick = serverDecode(params[0]);
+
+ IrcChannel *channel = network()->ircChannel(serverDecode(params[1]));
+ if(!channel) {
+ qWarning() << "IrcServerHandler::handle341(): unknown channel:" << params[1];
+ return;
+ }
+
+ emit displayMsg(Message::Server, BufferInfo::ChannelBuffer, channel->name(), tr("%1 has been invited to %2").arg(nick).arg(channel->name()));
+}
+
/* RPL_WHOREPLY: "<channel> <user> <host> <server> <nick>
( "H" / "G" > ["*"] [ ( "@" / "+" ) ] :<hopcount> <real name>" */
void IrcServerHandler::handle352(const QString &prefix, const QList<QByteArray> ¶ms) {