modernize: Use raw string literals instead of escaped strings
[quassel.git] / src / client / clientuserinputhandler.cpp
index 793f756..7179515 100644 (file)
@@ -1,5 +1,5 @@
 /***************************************************************************
- *   Copyright (C) 2005-2015 by the Quassel Project                        *
+ *   Copyright (C) 2005-2018 by the Quassel Project                        *
  *   devel@quassel-irc.org                                                 *
  *                                                                         *
  *   This program is free software; you can redistribute it and/or modify  *
 
 #include "clientuserinputhandler.h"
 
+#include "bufferinfo.h"
 #include "buffermodel.h"
 #include "client.h"
 #include "clientaliasmanager.h"
+#include "clientbufferviewconfig.h"
+#include "clientbufferviewmanager.h"
+#include "clientignorelistmanager.h"
 #include "clientsettings.h"
 #include "execwrapper.h"
+#include "ignorelistmanager.h"
 #include "ircuser.h"
+#include "messagemodel.h"
 #include "network.h"
 #include "types.h"
-#include "bufferinfo.h"
-#include "clientbufferviewconfig.h"
-#include "clientbufferviewmanager.h"
-#include "messagemodel.h"
 
 #include <QDateTime>
 
@@ -48,7 +50,7 @@ void ClientUserInputHandler::completionSuffixChanged(const QVariant &v)
 {
     QString suffix = v.toString();
     QString letter = "A-Za-z";
-    QString special = "\x5b-\x60\x7b-\x7d";
+    QString special = "\x5b-\x60\x7b-\x7d";  // NOLINT(modernize-raw-string-literal)
     _nickRx = QRegExp(QString("^([%1%2][%1%2\\d-]*)%3").arg(letter, special, suffix).trimmed());
 }
 
@@ -62,7 +64,7 @@ void ClientUserInputHandler::handleUserInput(const BufferInfo &bufferInfo, const
     if (!msg.startsWith('/')) {
         if (_nickRx.indexIn(msg) == 0) {
             const Network *net = Client::network(bufferInfo.networkId());
-            IrcUser *user = net ? net->ircUser(_nickRx.cap(1)) : 0;
+            IrcUser *user = net ? net->ircUser(_nickRx.cap(1)) : nullptr;
             if (user)
                 user->setLastSpokenTo(bufferInfo.bufferId(), QDateTime::currentDateTime().toUTC());
         }
@@ -87,7 +89,7 @@ void ClientUserInputHandler::defaultHandler(const QString &cmd, const BufferInfo
 
 void ClientUserInputHandler::handleExec(const BufferInfo &bufferInfo, const QString &execString)
 {
-    ExecWrapper *exec = new ExecWrapper(this); // gets suicidal when it's done
+    auto *exec = new ExecWrapper(this); // gets suicidal when it's done
     exec->start(bufferInfo, execString);
 }
 
@@ -116,6 +118,35 @@ void ClientUserInputHandler::handleQuery(const BufferInfo &bufferInfo, const QSt
 }
 
 
+void ClientUserInputHandler::handleIgnore(const BufferInfo &bufferInfo, const QString &text)
+{
+    if (text.isEmpty()) {
+        emit Client::instance()->displayIgnoreList("");
+        return;
+    }
+    // If rule contains no ! or @, we assume it is just a nickname, and turn it into an ignore rule for that nick
+    QString rule = (text.contains('!') || text.contains('@')) ? text : text + "!*@*";
+
+    Client::ignoreListManager()->requestAddIgnoreListItem(
+            IgnoreListManager::IgnoreType::SenderIgnore,
+            rule,
+            false,
+            // Use a dynamic ignore rule, for reversibility
+            IgnoreListManager::StrictnessType::SoftStrictness,
+            // Use current network as scope
+            IgnoreListManager::ScopeType::NetworkScope,
+            Client::network(bufferInfo.networkId())->networkName(),
+            true
+    );
+}
+
+void ClientUserInputHandler::handleList(const BufferInfo &bufferInfo, const QString &text)
+{
+    // Pass along any potential search parameters, list channels immediately
+    Client::instance()->displayChannelList(bufferInfo.networkId(), text, true);
+}
+
+
 void ClientUserInputHandler::switchBuffer(const NetworkId &networkId, const QString &bufferName)
 {
     BufferId newBufId = Client::networkModel()->bufferId(networkId, bufferName);