From 5cb19c841e567f26c34e77dbe254e530efacd6b3 Mon Sep 17 00:00:00 2001 From: Marcus Eggenberger Date: Sat, 1 Nov 2008 16:44:03 +0100 Subject: [PATCH] Fixing BR #369 (handle onotice/omsg properly, add /notice command) --- src/core/basichandler.cpp | 3 +++ src/core/ircserverhandler.cpp | 15 +++++++++------ src/core/userinputhandler.cpp | 9 +++++++++ src/core/userinputhandler.h | 1 + src/qtui/qtuiapplication.cpp | 2 +- 5 files changed, 23 insertions(+), 7 deletions(-) diff --git a/src/core/basichandler.cpp b/src/core/basichandler.cpp index c7d0efbb..0bb1438b 100644 --- a/src/core/basichandler.cpp +++ b/src/core/basichandler.cpp @@ -175,6 +175,9 @@ void BasicHandler::putCmd(const QString &cmd, const QByteArray ¶m, const QBy } void BasicHandler::displayMsg(Message::Type msgType, QString target, QString text, QString sender, Message::Flags flags) { + if(!target.isEmpty() && network()->prefixes().contains(target[0])) + target = target.mid(1); + IrcChannel *channel = network()->ircChannel(target); if(!channel && (target.startsWith('$') || target.startsWith('#'))) target = nickFromMask(sender); diff --git a/src/core/ircserverhandler.cpp b/src/core/ircserverhandler.cpp index 93076ec5..25e5c446 100644 --- a/src/core/ircserverhandler.cpp +++ b/src/core/ircserverhandler.cpp @@ -326,10 +326,14 @@ void IrcServerHandler::handleNotice(const QString &prefix, const QListisChannelName(target)) - target = nickFromMask(prefix); + } else { + if(!target.isEmpty() && network()->prefixes().contains(target[0])) + target = target.mid(1); + if(!network()->isChannelName(target)) + target = nickFromMask(prefix); + } networkConnection()->ctcpHandler()->parse(Message::Notice, prefix, target, params[1]); } @@ -398,9 +402,8 @@ void IrcServerHandler::handlePrivmsg(const QString &prefix, const QListisMyNick(target)) - target = nickFromMask(ircuser->nick()); + if(!network()->isChannelName(target)) + target = nickFromMask(prefix); // it's possible to pack multiple privmsgs into one param using ctcp // - > we let the ctcpHandler do the work diff --git a/src/core/userinputhandler.cpp b/src/core/userinputhandler.cpp index da3cc24a..e804c260 100644 --- a/src/core/userinputhandler.cpp +++ b/src/core/userinputhandler.cpp @@ -251,6 +251,15 @@ void UserInputHandler::handleNick(const BufferInfo &bufferInfo, const QString &m emit putCmd("NICK", serverEncode(nick)); } +void UserInputHandler::handleNotice(const BufferInfo &bufferInfo, const QString &msg) { + QString bufferName = msg.section(' ', 0, 0); + QString payload = msg.section(' ', 1); + QList params; + params << serverEncode(bufferName) << channelEncode(bufferInfo.bufferName(), payload); + emit putCmd("NOTICE", params); + emit displayMsg(Message::Notice, bufferName, payload, network()->myNick(), Message::Self); +} + void UserInputHandler::handleOp(const BufferInfo &bufferInfo, const QString &msg) { QStringList nicks = msg.split(' ', QString::SkipEmptyParts); QString m = "+"; for(int i = 0; i < nicks.count(); i++) m += 'o'; diff --git a/src/core/userinputhandler.h b/src/core/userinputhandler.h index ea248f3f..fdfed9ed 100644 --- a/src/core/userinputhandler.h +++ b/src/core/userinputhandler.h @@ -49,6 +49,7 @@ public slots: void handleMode(const BufferInfo &bufferInfo, const QString &text); void handleMsg(const BufferInfo &bufferInfo, const QString &text); void handleNick(const BufferInfo &bufferInfo, const QString &text); + void handleNotice(const BufferInfo &bufferInfo, const QString &text); void handleOper(const BufferInfo &bufferInfo, const QString &text); void handleOp(const BufferInfo &bufferInfo, const QString &text); void handlePart(const BufferInfo &bufferInfo, const QString &text); diff --git a/src/qtui/qtuiapplication.cpp b/src/qtui/qtuiapplication.cpp index 90e2739d..7f5189fa 100644 --- a/src/qtui/qtuiapplication.cpp +++ b/src/qtui/qtuiapplication.cpp @@ -56,7 +56,7 @@ QtUiApplication::QtUiApplication(int &argc, char **argv) parser->addSwitch("debugbufferswitches",0,"Enables debugging for bufferswitches"); parser->addSwitch("debugmodel",0,"Enables debugging for models"); - qInstallMsgHandler(Client::logMessage); + // qInstallMsgHandler(Client::logMessage); } bool QtUiApplication::init() { -- 2.20.1