void MyIrcSession::on_modeChanged(IrcMessage *message) { IrcModeMessage *m = (IrcModeMessage *) message; // mode changed: "#testik" "HanzZ" "+o" "hanzz_k" std::string nickname = TO_UTF8(m->argument()); std::string mode = TO_UTF8(m->mode()); if (nickname.empty()) return; 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 tst_IrcMessage::testModeMessage() { QFETCH(bool, valid); QFETCH(QByteArray, data); QFETCH(QString, target); QFETCH(QString, mode); QFETCH(QString, argument); IrcConnection connection; IrcMessage* message = IrcMessage::fromData(data, &connection); QCOMPARE(message->type(), IrcMessage::Mode); QCOMPARE(message->command(), QString("MODE")); QCOMPARE(message->property("valid").toBool(), valid); QCOMPARE(message->property("target").toString(), target); QCOMPARE(message->property("mode").toString(), mode); QCOMPARE(message->property("argument").toString(), argument); IrcModeMessage* modeMessage = qobject_cast<IrcModeMessage*>(message); QVERIFY(modeMessage); QCOMPARE(modeMessage->isValid(), valid); QCOMPARE(modeMessage->target(), target); QCOMPARE(modeMessage->mode(), mode); QCOMPARE(modeMessage->argument(), argument); }