Fixing BR #369 (handle onotice/omsg properly, add /notice command)
authorMarcus Eggenberger <egs@quassel-irc.org>
Sat, 1 Nov 2008 15:44:03 +0000 (16:44 +0100)
committerMarcus Eggenberger <egs@quassel-irc.org>
Sat, 1 Nov 2008 15:44:03 +0000 (16:44 +0100)
src/core/basichandler.cpp
src/core/ircserverhandler.cpp
src/core/userinputhandler.cpp
src/core/userinputhandler.h
src/qtui/qtuiapplication.cpp

index c7d0efb..0bb1438 100644 (file)
@@ -175,6 +175,9 @@ void BasicHandler::putCmd(const QString &cmd, const QByteArray &param, 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);
index 93076ec..25e5c44 100644 (file)
@@ -326,10 +326,14 @@ void IrcServerHandler::handleNotice(const QString &prefix, const QList<QByteArra
     return;
 
   QString target = serverDecode(params[0]);
-  if(prefix.isEmpty() || target == "AUTH")
+  if(prefix.isEmpty() || target == "AUTH") {
     target = "";
-  else if(!network()->isChannelName(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 QList<QByteArr
     ? QByteArray("")
     : params[1];
 
-  // are we the target?
-  if(network()->isMyNick(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
index da3cc24..e804c26 100644 (file)
@@ -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<QByteArray> 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';
index ea248f3..fdfed9e 100644 (file)
@@ -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);
index 90e2739..7f5189f 100644 (file)
@@ -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() {