new handler for ctcp clientinfo, fixes #1012
authorJohannes Huber <johu@gmx.de>
Wed, 11 Aug 2010 06:48:23 +0000 (08:48 +0200)
committerManuel Nickschas <sputnick@quassel-irc.org>
Wed, 11 Aug 2010 14:45:25 +0000 (16:45 +0200)
- added new handler for ctcp clientinfo
- replaced contextmenu ctcp finger command with clientinfo
- finger contextmenu action was not working, no handler is implemented
  for this

src/core/ctcphandler.cpp
src/core/ctcphandler.h
src/uisupport/contextmenuactionprovider.cpp
src/uisupport/networkmodelcontroller.cpp
src/uisupport/networkmodelcontroller.h

index 655f170..6a28f5e 100644 (file)
@@ -188,6 +188,20 @@ void CtcpHandler::handleAction(CtcpType ctcptype, const QString &prefix, const Q
   emit displayMsg(Message::Action, typeByTarget(target), target, param, prefix);
 }
 
+void CtcpHandler::handleClientinfo(CtcpType ctcptype, const QString &prefix, const QString &target, const QString &param) {
+  Q_UNUSED(target)
+  if(ctcptype == CtcpQuery) {
+    if(_ignoreListManager->ctcpMatch(prefix, network()->networkName(), "CLIENTINFO"))
+      return;
+    reply(nickFromMask(prefix), "CLIENTINFO", QString("ACTION CLIENTINFO PING TIME VERSION"));
+    emit displayMsg(Message::Server, BufferInfo::StatusBuffer, "", tr("Received CTCP CLIENTINFO request from %1").arg(prefix));
+  } else {
+    // display clientinfo answer
+    emit displayMsg(Message::Server, BufferInfo::StatusBuffer, "", tr("Received CTCP CLIENTINFO answer from %1: %2")
+                    .arg(nickFromMask(prefix)).arg(param));
+  }
+}
+
 void CtcpHandler::handlePing(CtcpType ctcptype, const QString &prefix, const QString &target, const QString &param) {
   Q_UNUSED(target)
   if(ctcptype == CtcpQuery) {
index 169ec16..fde488d 100644 (file)
@@ -49,6 +49,7 @@ public:
 
 public slots:
   void handleAction(CtcpType, const QString &prefix, const QString &target, const QString &param);
+  void handleClientinfo(CtcpType, const QString &prefix, const QString &target, const QString &param);
   void handlePing(CtcpType, const QString &prefix, const QString &target, const QString &param);
   void handleTime(CtcpType, const QString &prefix, const QString &target, const QString &param);
   void handleVersion(CtcpType, const QString &prefix, const QString &target, const QString &param);
index 55932e3..b10b106 100644 (file)
@@ -62,7 +62,7 @@ ContextMenuActionProvider::ContextMenuActionProvider(QObject *parent) : NetworkM
   registerAction(NickCtcpVersion, tr("Version"));
   registerAction(NickCtcpTime, tr("Time"));
   registerAction(NickCtcpPing, tr("Ping"));
-  registerAction(NickCtcpFinger, tr("Finger"));
+  registerAction(NickCtcpClientinfo, tr("Client info"));
   registerAction(NickIgnoreCustom, tr("Custom..."));
 
   // these texts are only dummies! don't think about tr() here!
@@ -106,7 +106,7 @@ ContextMenuActionProvider::ContextMenuActionProvider(QObject *parent) : NetworkM
   nickCtcpMenu->addAction(action(NickCtcpPing));
   nickCtcpMenu->addAction(action(NickCtcpVersion));
   nickCtcpMenu->addAction(action(NickCtcpTime));
-  nickCtcpMenu->addAction(action(NickCtcpFinger));
+  nickCtcpMenu->addAction(action(NickCtcpClientinfo));
   _nickCtcpMenuAction = new Action(tr("CTCP"), 0);
   _nickCtcpMenuAction->setMenu(nickCtcpMenu);
 
index 111e1c3..020aaed 100644 (file)
@@ -393,8 +393,8 @@ void NetworkModelController::handleNickAction(ActionType type, QAction *action)
       case NickCtcpTime:
         Client::userInput(bufferInfo, QString("/CTCP %1 TIME").arg(nick));
         break;
-      case NickCtcpFinger:
-        Client::userInput(bufferInfo, QString("/CTCP %1 FINGER").arg(nick));
+      case NickCtcpClientinfo:
+        Client::userInput(bufferInfo, QString("/CTCP %1 CLIENTINFO").arg(nick));
         break;
       case NickOp:
         Client::userInput(bufferInfo, QString("/OP %1").arg(nick));
index 4e84a6b..4db935f 100644 (file)
@@ -80,7 +80,7 @@ public:
     NickCtcpVersion = 0x040000,
     NickCtcpPing = 0x050000,
     NickCtcpTime = 0x060000,
-    NickCtcpFinger = 0x070000,
+    NickCtcpClientinfo = 0x070000,
     NickOp = 0x080000,
     NickDeop = 0x090000,
     NickVoice = 0x0a0000,