X-Git-Url: https://git.quassel-irc.org/?p=quassel.git;a=blobdiff_plain;f=src%2Fcore%2Fcoreuserinputhandler.cpp;h=d060ada286b4bbb160ef98196e6160aedbdba866;hp=755e64a95d4b470db26f38f101afe72cb4765dbe;hb=c194ed5fb3d15e14b9364f9796d3521910dc72fe;hpb=96d275205b16280f8b938ab7f54d62c51fad358c diff --git a/src/core/coreuserinputhandler.cpp b/src/core/coreuserinputhandler.cpp index 755e64a9..d060ada2 100644 --- a/src/core/coreuserinputhandler.cpp +++ b/src/core/coreuserinputhandler.cpp @@ -1,5 +1,5 @@ /*************************************************************************** - * Copyright (C) 2005-2016 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 * @@ -30,13 +30,6 @@ # include "cipher.h" #endif -#if QT_VERSION < 0x050000 -// QChar::LineFeed is Qt 5 -static const QChar QCharLF = QChar('\n'); -#else -static const QChar QCharLF = QChar::LineFeed; -#endif - CoreUserInputHandler::CoreUserInputHandler(CoreNetwork *parent) : CoreBasicHandler(parent) { @@ -457,11 +450,10 @@ void CoreUserInputHandler::handleMe(const BufferInfo &bufferInfo, const QString // Split apart messages at line feeds. The IRC protocol uses those to separate commands, so // they need to be split into multiple messages. - QStringList messages = msg.split(QCharLF); + QStringList messages = msg.split(QChar::LineFeed); foreach (auto message, messages) { - // Handle each separated message independently, ignoring any carriage returns - message = message.trimmed(); + // Handle each separated message independently coreNetwork()->coreSession()->ctcpParser()->query(coreNetwork(), bufferInfo.bufferName(), "ACTION", message); emit displayMsg(Message::Action, bufferInfo.type(), bufferInfo.bufferName(), message, @@ -475,17 +467,21 @@ void CoreUserInputHandler::handleMode(const BufferInfo &bufferInfo, const QStrin Q_UNUSED(bufferInfo) QStringList params = msg.split(' ', QString::SkipEmptyParts); - // if the first argument is neither a channel nor us (user modes are only to oneself) the current buffer is assumed to be the target if (!params.isEmpty()) { - if (!network()->isChannelName(params[0]) && !network()->isMyNick(params[0])) - params.prepend(bufferInfo.bufferName()); - if (network()->isMyNick(params[0]) && params.count() == 2) - network()->updateIssuedModes(params[1]); if (params[0] == "-reset" && params.count() == 1) { - // FIXME: give feedback to the user (I don't want to add new strings right now) network()->resetPersistentModes(); + emit displayMsg(Message::Info, BufferInfo::StatusBuffer, "", + tr("Your persistent modes have been reset.")); return; } + if (!network()->isChannelName(params[0]) && !network()->isMyNick(params[0])) + // If the first argument is neither a channel nor us (user modes are only to oneself) + // the current buffer is assumed to be the target. + // If the current buffer returns no name (e.g. status buffer), assume target is us. + params.prepend(!bufferInfo.bufferName().isEmpty() ? + bufferInfo.bufferName() : network()->myNick()); + if (network()->isMyNick(params[0]) && params.count() == 2) + network()->updateIssuedModes(params[1]); } // TODO handle correct encoding for buffer modes (channelEncode()) @@ -529,11 +525,10 @@ void CoreUserInputHandler::handleNotice(const BufferInfo &bufferInfo, const QStr QList params; // Split apart messages at line feeds. The IRC protocol uses those to separate commands, so // they need to be split into multiple messages. - QStringList messages = msg.section(' ', 1).split(QCharLF); + QStringList messages = msg.section(' ', 1).split(QChar::LineFeed); foreach (auto message, messages) { - // Handle each separated message independently, ignoring any carriage returns - message = message.trimmed(); + // Handle each separated message independently params.clear(); params << serverEncode(bufferName) << channelEncode(bufferInfo.bufferName(), message); emit putCmd("NOTICE", params); @@ -604,11 +599,10 @@ void CoreUserInputHandler::handleQuery(const BufferInfo &bufferInfo, const QStri QString target = msg.section(' ', 0, 0); // Split apart messages at line feeds. The IRC protocol uses those to separate commands, so // they need to be split into multiple messages. - QStringList messages = msg.section(' ', 1).split(QCharLF); + QStringList messages = msg.section(' ', 1).split(QChar::LineFeed); foreach (auto message, messages) { - // Handle each separated message independently, ignoring any carriage returns - message = message.trimmed(); + // Handle each separated message independently if (message.isEmpty()) { emit displayMsg(Message::Server, BufferInfo::QueryBuffer, target, tr("Starting query with %1").arg(target), network()->myNick(), @@ -656,11 +650,10 @@ void CoreUserInputHandler::handleSay(const BufferInfo &bufferInfo, const QString // Split apart messages at line feeds. The IRC protocol uses those to separate commands, so // they need to be split into multiple messages. - QStringList messages = msg.split(QCharLF); + QStringList messages = msg.split(QChar::LineFeed, QString::SkipEmptyParts); foreach (auto message, messages) { - // Handle each separated message independently, ignoring any carriage returns - message = message.trimmed(); + // Handle each separated message independently #ifdef HAVE_QCA2 putPrivmsg(bufferInfo.bufferName(), message, encodeFunc, network()->cipher(bufferInfo.bufferName()));