From 6a0980c371aa87e6ec8c410aa4d238e41ccd4f06 Mon Sep 17 00:00:00 2001 From: HanzZ Date: Wed, 13 Feb 2013 07:59:40 +0100 Subject: [PATCH] Communi: Change mode only in particular room, not globally. --- backends/libcommuni/session.cpp | 46 ++++++++++++++++----------------- 1 file changed, 23 insertions(+), 23 deletions(-) diff --git a/backends/libcommuni/session.cpp b/backends/libcommuni/session.cpp index 579bbbbb..ffa7f690 100644 --- a/backends/libcommuni/session.cpp +++ b/backends/libcommuni/session.cpp @@ -120,9 +120,8 @@ bool MyIrcSession::correctNickname(std::string &nickname) { void MyIrcSession::on_joined(IrcMessage *message) { IrcJoinMessage *m = (IrcJoinMessage *) message; - bool op = 0; std::string nickname = TO_UTF8(m->sender().name()); - op = correctNickname(nickname); + bool op = correctNickname(nickname); getIRCBuddy(TO_UTF8(m->channel().toLower()), nickname).setOp(op); np->handleParticipantChanged(user, nickname, TO_UTF8(m->channel().toLower()) + suffix, op, pbnetwork::STATUS_ONLINE); LOG4CXX_INFO(logger, user << ": " << nickname << " joined " << TO_UTF8(m->channel().toLower()) + suffix); @@ -131,9 +130,8 @@ void MyIrcSession::on_joined(IrcMessage *message) { void MyIrcSession::on_parted(IrcMessage *message) { IrcPartMessage *m = (IrcPartMessage *) message; - bool op = 0; std::string nickname = TO_UTF8(m->sender().name()); - op = correctNickname(nickname); + bool op = correctNickname(nickname); removeIRCBuddy(TO_UTF8(m->channel().toLower()), nickname); LOG4CXX_INFO(logger, user << ": " << nickname << " parted " << TO_UTF8(m->channel().toLower()) + suffix); np->handleParticipantChanged(user, nickname, TO_UTF8(m->channel().toLower()) + suffix, op, pbnetwork::STATUS_NONE, TO_UTF8(m->reason())); @@ -141,13 +139,13 @@ void MyIrcSession::on_parted(IrcMessage *message) { void MyIrcSession::on_quit(IrcMessage *message) { IrcQuitMessage *m = (IrcQuitMessage *) message; + std::string nickname = TO_UTF8(m->sender().name()); + bool op = correctNickname(nickname); + for(AutoJoinMap::iterator it = m_autoJoin.begin(); it != m_autoJoin.end(); it++) { - bool op = 0; - std::string nickname = TO_UTF8(m->sender().name()); if (!hasIRCBuddy(it->second->getChannel(), nickname)) { continue; } - op = correctNickname(nickname); removeIRCBuddy(it->second->getChannel(), nickname); LOG4CXX_INFO(logger, user << ": " << nickname << " quit " << it->second->getChannel() + suffix); np->handleParticipantChanged(user, nickname, it->second->getChannel() + suffix, op, pbnetwork::STATUS_NONE, TO_UTF8(m->reason())); @@ -156,9 +154,10 @@ void MyIrcSession::on_quit(IrcMessage *message) { void MyIrcSession::on_nickChanged(IrcMessage *message) { IrcNickMessage *m = (IrcNickMessage *) message; + std::string nickname = TO_UTF8(m->sender().name()); + correctNickname(nickname); for(AutoJoinMap::iterator it = m_autoJoin.begin(); it != m_autoJoin.end(); it++) { - std::string nickname = TO_UTF8(m->sender().name()); if (!hasIRCBuddy(it->second->getChannel(), nickname)) { continue; } @@ -176,20 +175,23 @@ void MyIrcSession::on_modeChanged(IrcMessage *message) { std::string mode = TO_UTF8(m->mode()); if (nickname.empty()) return; - LOG4CXX_INFO(logger, user << ": " << nickname << " changed mode to " << mode); - for(AutoJoinMap::iterator it = m_autoJoin.begin(); it != m_autoJoin.end(); it++) { - if (!hasIRCBuddy(it->second->getChannel(), nickname)) { - continue; - } - IRCBuddy &buddy = getIRCBuddy(it->second->getChannel(), nickname); - if (mode == "+o") { - buddy.setOp(true); - } - else { - buddy.setOp(false); - } - np->handleParticipantChanged(user, nickname, it->second->getChannel() + suffix,(int) buddy.isOp(), pbnetwork::STATUS_ONLINE, ""); + + correctNickname(nickname); + + if (!hasIRCBuddy(TO_UTF8(m->target().toLower()), nickname)) { + return; } + IRCBuddy &buddy = getIRCBuddy(TO_UTF8(m->target().toLower()), nickname); + if (mode == "+o") { + buddy.setOp(true); + } + else { + buddy.setOp(false); + } + + np->handleParticipantChanged(user, nickname, TO_UTF8(m->target().toLower()) + suffix,(int) buddy.isOp(), pbnetwork::STATUS_ONLINE, ""); + + LOG4CXX_INFO(logger, user << ": " << nickname << " changed mode to " << mode << " in " << TO_UTF8(m->target().toLower())); } void MyIrcSession::on_topicChanged(IrcMessage *message) { @@ -351,8 +353,6 @@ void MyIrcSession::on_numericMessageReceived(IrcMessage *message) { if (m->code() >= 400 && m->code() < 500) { LOG4CXX_INFO(logger, user << ": Error message received: " << message->toData().data()); } - - //qDebug() << "numeric message received:" << receiver() << origin << code << params; } void MyIrcSession::awayTimeout() {