if (net->isMe(ircuser)) {
net->setChannelJoined(channel);
+ // Mark the message as Self
+ e->setFlag(EventManager::Self);
// FIXME use event
net->putRawLine(net->serverEncode("MODE " + channel)); // we want to know the modes of the channel we just joined, so we ask politely
}
ircUser->removeUserModes(removeModes);
if (e->network()->isMe(ircUser)) {
+ // Mark the message as Self
+ e->setFlag(EventManager::Self);
coreNetwork(e)->updatePersistentModes(addModes, removeModes);
}
}
}
+void CoreSessionEventProcessor::processIrcEventNick(IrcEvent *e)
+{
+ if (checkParamCount(e, 1)) {
+ IrcUser *ircuser = e->network()->updateNickFromMask(e->prefix());
+ if (!ircuser) {
+ qWarning() << Q_FUNC_INFO << "Unknown IrcUser!";
+ return;
+ }
+
+ if (e->network()->isMe(ircuser)) {
+ // Mark the message as Self
+ e->setFlag(EventManager::Self);
+ }
+
+ // Actual processing is handled in lateProcessIrcEventNick(), this just sets the event flag
+ }
+}
+
+
void CoreSessionEventProcessor::lateProcessIrcEventNick(IrcEvent *e)
{
if (checkParamCount(e, 1)) {
}
+void CoreSessionEventProcessor::processIrcEventPart(IrcEvent *e)
+{
+ if (checkParamCount(e, 1)) {
+ IrcUser *ircuser = e->network()->updateNickFromMask(e->prefix());
+ if (!ircuser) {
+ qWarning() << Q_FUNC_INFO<< "Unknown IrcUser!";
+ return;
+ }
+
+ if (e->network()->isMe(ircuser)) {
+ // Mark the message as Self
+ e->setFlag(EventManager::Self);
+ }
+
+ // Actual processing is handled in lateProcessIrcEventNick(), this just sets the event flag
+ }
+}
+
+
void CoreSessionEventProcessor::lateProcessIrcEventPart(IrcEvent *e)
{
if (checkParamCount(e, 1)) {
}
QString channel = e->params().at(0);
ircuser->partChannel(channel);
- if (e->network()->isMe(ircuser))
+ if (e->network()->isMe(ircuser)) {
qobject_cast<CoreNetwork *>(e->network())->setChannelParted(channel);
+ }
}
}
if (!ircuser)
return;
+ if (e->network()->isMe(ircuser)) {
+ // Mark the message as Self
+ e->setFlag(EventManager::Self);
+ }
+
QString msg;
if (e->params().count() > 0)
msg = e->params()[0];
void CoreSessionEventProcessor::processIrcEventTopic(IrcEvent *e)
{
if (checkParamCount(e, 2)) {
- e->network()->updateNickFromMask(e->prefix());
+ IrcUser *ircuser = e->network()->updateNickFromMask(e->prefix());
+
+ if (e->network()->isMe(ircuser)) {
+ // Mark the message as Self
+ e->setFlag(EventManager::Self);
+ }
+
IrcChannel *channel = e->network()->ircChannel(e->params().at(0));
if (channel)
channel->setTopic(e->params().at(1));
if (e->testFlag(EventManager::Netsplit))
return;
- displayMsg(e, Message::Join, e->params()[0], e->prefix(), e->params()[0]);
+ Message::Flag msgFlags = Message::Flag::None;
+ if (e->testFlag(EventManager::Self)) {
+ // Mark the message as Self
+ msgFlags = Message::Self;
+ }
+
+ displayMsg(e, Message::Join, e->params()[0], e->prefix(), e->params()[0], msgFlags);
}
if (e->params().count() > 2)
msg += " " + e->params().at(2);
- displayMsg(e, Message::Kick, msg, e->prefix(), channel);
+ Message::Flag msgFlags = Message::Flag::None;
+ if (e->testFlag(EventManager::Self)) {
+ // Mark the message as Self
+ msgFlags = Message::Self;
+ }
+
+ displayMsg(e, Message::Kick, msg, e->prefix(), channel, msgFlags);
}
}
else {
// User Modes
// FIXME: redirect
- displayMsg(e, Message::Mode, e->params().join(" "), e->prefix());
+
+ Message::Flag msgFlags = Message::Flag::None;
+ if (e->testFlag(EventManager::Self)) {
+ // Mark the message as Self
+ msgFlags = Message::Self;
+ }
+ displayMsg(e, Message::Mode, e->params().join(" "), e->prefix(), QString(), msgFlags);
}
}
}
QString newnick = e->params().at(0);
- QString oldnick = ircuser->nick();
- QString sender = e->network()->isMyNick(oldnick) ? newnick : e->prefix();
- foreach(const QString &channel, ircuser->channels())
- displayMsg(e, Message::Nick, newnick, sender, channel);
+ QString sender;
+ Message::Flag msgFlags = Message::Flag::None;
+ if (e->testFlag(EventManager::Self)) {
+ // Treat the sender as the new nickname, mark the message as Self
+ sender = newnick;
+ msgFlags = Message::Self;
+ } else {
+ // Take the sender from the event prefix, don't mark the message
+ sender = e->prefix();
+ }
+
+ // Announce to all channels the IrcUser is in
+ foreach(const QString &channel, ircuser->channels()) {
+ displayMsg(e, Message::Nick, newnick, sender, channel, msgFlags);
+ }
}
QString channel = e->params().at(0);
QString msg = e->params().count() > 1 ? e->params().at(1) : QString();
- displayMsg(e, Message::Part, msg, e->prefix(), channel);
+
+ Message::Flag msgFlags = Message::Flag::None;
+ if (e->testFlag(EventManager::Self)) {
+ // Mark the message as Self
+ msgFlags = Message::Self;
+ }
+
+ displayMsg(e, Message::Part, msg, e->prefix(), channel, msgFlags);
}
if (!ircuser)
return;
- foreach(const QString &channel, ircuser->channels())
- displayMsg(e, Message::Quit, e->params().count() ? e->params().first() : QString(), e->prefix(), channel);
+
+ Message::Flag msgFlags = Message::Flag::None;
+ if (e->testFlag(EventManager::Self)) {
+ // Mark the message as Self
+ msgFlags = Message::Self;
+ }
+
+ // Announce to all channels the IrcUser is in
+ foreach(const QString &channel, ircuser->channels()) {
+ displayMsg(e, Message::Quit, e->params().count() ? e->params().first() : QString(),
+ e->prefix(), channel, msgFlags);
+ }
}
void EventStringifier::processIrcEventTopic(IrcEvent *e)
{
+ Message::Flag msgFlags = Message::Flag::None;
+ if (e->testFlag(EventManager::Self)) {
+ // Mark the message as Self
+ msgFlags = Message::Self;
+ }
+
displayMsg(e, Message::Topic, tr("%1 has changed topic for %2 to: \"%3\"")
- .arg(e->nick(), e->params().at(0), e->params().at(1)), QString(), e->params().at(0));
+ .arg(e->nick(), e->params().at(0), e->params().at(1)), QString(), e->params().at(0),
+ msgFlags);
}
void EventStringifier::processIrcEventError(IrcEvent *e)
return;
if (e->testFlag(EventManager::Self)) {
- displayMsg(e, Message::Action, tr("sending CTCP-%1 request to %2").arg(e->ctcpCmd(), e->target()), e->network()->myNick());
+ displayMsg(e, Message::Action,
+ tr("sending CTCP-%1 request to %2").arg(e->ctcpCmd(), e->target()),
+ e->network()->myNick(), QString(), Message::Flag::Self);
return;
}