#include "ircuser.h"
#include <QDebug>
+#include <QRegExp>
UserInputHandler::UserInputHandler(NetworkConnection *parent) : BasicHandler(parent) {
}
}
void UserInputHandler::handleJoin(const BufferInfo &bufferInfo, const QString &msg) {
- Q_UNUSED(bufferInfo)
- QStringList params = msg.trimmed().split(" ");
+ Q_UNUSED(bufferInfo);
+
+ // trim spaces before chans or keys
+ QString sane_msg = msg;
+ sane_msg.replace(QRegExp(", +"), ",");
+ QStringList params = sane_msg.trimmed().split(" ");
QStringList chans = params[0].split(",");
QStringList keys;
int i;
for(i = 0; i < chans.count(); i++) {
- if (chans.at(i)[0].isLetterOrNumber())
- chans[i].prepend(QChar('#'));
+ if(!network()->isChannelName(chans[i]))
+ chans[i].prepend('#');
}
params[0] = chans.join(",");
if(params.count() > 1) keys = params[1].split(",");
void UserInputHandler::handleMe(const BufferInfo &bufferInfo, const QString &msg) {
if(bufferInfo.bufferName().isEmpty()) return; // server buffer
networkConnection()->ctcpHandler()->query(bufferInfo.bufferName(), "ACTION", msg);
- emit displayMsg(Message::Action, bufferInfo.type(), bufferInfo.bufferName(), msg, network()->myNick());
+ emit displayMsg(Message::Action, bufferInfo.type(), bufferInfo.bufferName(), msg, network()->myNick(), Message::Self);
}
void UserInputHandler::handleMode(const BufferInfo &bufferInfo, const QString &msg) {
for(int i = 0; i < commands.count(); i++) {
QString command = commands[i];
for(int j = params.count(); j > 0; j--) {
+ IrcUser *ircUser = network()->ircUser(params[j - 1]);
+ command = command.replace(QString("$%1:hostname").arg(j), ircUser ? ircUser->host() : QString("*"));
command = command.replace(QString("$%1").arg(j), params[j - 1]);
}
command = command.replace("$0", msg);