is independent from the message sending/receiving encodings, so you can have a
channelname encoded in ISO, for example, and still send messages in utf8 to that
chan.
No UI to configure this yet, the server encoding is hardcoded to Latin1 for now. The
rest can be edited in network settings.
13 files changed:
-IrcChannel::IrcChannel(const QString &channelname, Network *network)
- : SyncableObject(network),
+IrcChannel::IrcChannel(const QString &channelname, Network *network) : SyncableObject(network),
_initialized(false),
_name(channelname),
_topic(QString()),
_initialized(false),
_name(channelname),
_topic(QString()),
+ network(network),
+ _codecForEncoding(0),
+ _codecForDecoding(0)
{
setObjectName(QString::number(network->networkId().toInt()) + "/" + channelname);
}
{
setObjectName(QString::number(network->networkId().toInt()) + "/" + channelname);
}
return ::decodeString(text, _codecForDecoding);
}
return ::decodeString(text, _codecForDecoding);
}
-QByteArray IrcChannel::encodeString(const QString string) const {
+QByteArray IrcChannel::encodeString(const QString &string) const {
if(codecForEncoding()) {
return _codecForEncoding->fromUnicode(string);
}
if(codecForEncoding()) {
return _codecForEncoding->fromUnicode(string);
}
void setCodecForDecoding(QTextCodec *codec);
QString decodeString(const QByteArray &text) const;
void setCodecForDecoding(QTextCodec *codec);
QString decodeString(const QByteArray &text) const;
- QByteArray encodeString(const QString string) const;
+ QByteArray encodeString(const QString &string) const;
public slots:
void setTopic(const QString &topic);
public slots:
void setTopic(const QString &topic);
#include <QTextCodec>
#include <QDebug>
#include <QTextCodec>
#include <QDebug>
-IrcUser::IrcUser(const QString &hostmask, Network *network)
- : SyncableObject(network),
+IrcUser::IrcUser(const QString &hostmask, Network *network) : SyncableObject(network),
_initialized(false),
_nick(nickFromMask(hostmask)),
_user(userFromMask(hostmask)),
_initialized(false),
_nick(nickFromMask(hostmask)),
_user(userFromMask(hostmask)),
return ::decodeString(text, codecForDecoding());
}
return ::decodeString(text, codecForDecoding());
}
-QByteArray IrcUser::encodeString(const QString string) const {
+QByteArray IrcUser::encodeString(const QString &string) const {
if(codecForEncoding()) {
return codecForEncoding()->fromUnicode(string);
}
if(codecForEncoding()) {
return codecForEncoding()->fromUnicode(string);
}
void setCodecForDecoding(QTextCodec *codec);
QString decodeString(const QByteArray &text) const;
void setCodecForDecoding(QTextCodec *codec);
QString decodeString(const QByteArray &text) const;
- QByteArray encodeString(const QString string) const;
+ QByteArray encodeString(const QString &string) const;
public slots:
void setUser(const QString &user);
public slots:
void setUser(const QString &user);
quasselTranslator.load(QString(":i18n/quassel_%1").arg(locale.name()));
app.installTranslator(&quasselTranslator);
quasselTranslator.load(QString(":i18n/quassel_%1").arg(locale.name()));
app.installTranslator(&quasselTranslator);
- Network::setDefaultCodecForServer("UTF-8");
+ Network::setDefaultCodecForServer("ISO-8859-15");
Network::setDefaultCodecForEncoding("UTF-8");
Network::setDefaultCodecForDecoding("ISO-8859-15");
Network::setDefaultCodecForEncoding("UTF-8");
Network::setDefaultCodecForDecoding("ISO-8859-15");
// Public:
// ====================
Network::Network(const NetworkId &networkid, QObject *parent) : SyncableObject(parent),
// Public:
// ====================
Network::Network(const NetworkId &networkid, QObject *parent) : SyncableObject(parent),
_networkId(networkid),
_identity(0),
_myNick(QString()),
_networkId(networkid),
_identity(0),
_myNick(QString()),
_connectionState(Disconnected),
_prefixes(QString()),
_prefixModes(QString()),
_connectionState(Disconnected),
_prefixes(QString()),
_prefixModes(QString()),
_useRandomServer(false),
_useAutoIdentify(false),
_useAutoReconnect(false),
_useRandomServer(false),
_useAutoIdentify(false),
_useAutoReconnect(false),
}
IrcUser *Network::newIrcUser(const QByteArray &hostmask) {
}
IrcUser *Network::newIrcUser(const QByteArray &hostmask) {
- return newIrcUser(decodeString(hostmask));
+ return newIrcUser(decodeServerString(hostmask));
}
void Network::removeIrcUser(IrcUser *ircuser) {
}
void Network::removeIrcUser(IrcUser *ircuser) {
}
IrcUser *Network::ircUser(const QByteArray &nickname) const {
}
IrcUser *Network::ircUser(const QByteArray &nickname) const {
- return ircUser(decodeString(nickname));
+ return ircUser(decodeServerString(nickname));
}
QList<IrcUser *> Network::ircUsers() const {
}
QList<IrcUser *> Network::ircUsers() const {
}
IrcChannel *Network::newIrcChannel(const QByteArray &channelname) {
}
IrcChannel *Network::newIrcChannel(const QByteArray &channelname) {
- return newIrcChannel(decodeString(channelname));
+ return newIrcChannel(decodeServerString(channelname));
}
IrcChannel *Network::ircChannel(QString channelname) const {
}
IrcChannel *Network::ircChannel(QString channelname) const {
}
IrcChannel *Network::ircChannel(const QByteArray &channelname) const {
}
IrcChannel *Network::ircChannel(const QByteArray &channelname) const {
- return ircChannel(decodeString(channelname));
+ return ircChannel(decodeServerString(channelname));
else return ::decodeString(text, _defaultCodecForDecoding);
}
else return ::decodeString(text, _defaultCodecForDecoding);
}
-QByteArray Network::encodeString(const QString string) const {
+QByteArray Network::encodeString(const QString &string) const {
if(_codecForEncoding) {
return _codecForEncoding->fromUnicode(string);
}
if(_codecForEncoding) {
return _codecForEncoding->fromUnicode(string);
}
return string.toAscii();
}
return string.toAscii();
}
+QString Network::decodeServerString(const QByteArray &text) const {
+ if(_codecForServer) return ::decodeString(text, _codecForServer);
+ else return ::decodeString(text, _defaultCodecForServer);
+}
+
+QByteArray Network::encodeServerString(const QString &string) const {
+ if(_codecForServer) {
+ return _codecForServer->fromUnicode(string);
+ }
+ if(_defaultCodecForServer) {
+ return _defaultCodecForServer->fromUnicode(string);
+ }
+ return string.toAscii();
+}
+
// ====================
// Public Slots:
// ====================
// ====================
// Public Slots:
// ====================
void setCodecForDecoding(QTextCodec *codec);
QString decodeString(const QByteArray &text) const;
void setCodecForDecoding(QTextCodec *codec);
QString decodeString(const QByteArray &text) const;
- QByteArray encodeString(const QString string) const;
+ QByteArray encodeString(const QString &string) const;
+ QString decodeServerString(const QByteArray &text) const;
+ QByteArray encodeServerString(const QString &string) const;
static QByteArray defaultCodecForServer();
static QByteArray defaultCodecForEncoding();
static QByteArray defaultCodecForServer();
static QByteArray defaultCodecForEncoding();
void disconnectRequested(NetworkId id = 0) const;
private:
void disconnectRequested(NetworkId id = 0) const;
private:
+ QPointer<SignalProxy> _proxy;
+
NetworkId _networkId;
IdentityId _identity;
NetworkId _networkId;
IdentityId _identity;
bool _unlimitedReconnectRetries;
bool _rejoinChannels;
bool _unlimitedReconnectRetries;
bool _rejoinChannels;
- QPointer<SignalProxy> _proxy;
void determinePrefixes();
QTextCodec *_codecForServer;
void determinePrefixes();
QTextCodec *_codecForServer;
-QString BasicHandler::bufferDecode(const QString &bufferName, const QByteArray &string) {
- return networkConnection()->bufferDecode(bufferName, string);
+QString BasicHandler::channelDecode(const QString &bufferName, const QByteArray &string) {
+ return networkConnection()->channelDecode(bufferName, string);
-QStringList BasicHandler::bufferDecode(const QString &bufferName, const QList<QByteArray> &stringlist) {
+QStringList BasicHandler::channelDecode(const QString &bufferName, const QList<QByteArray> &stringlist) {
- foreach(QByteArray s, stringlist) list << networkConnection()->bufferDecode(bufferName, s);
+ foreach(QByteArray s, stringlist) list << networkConnection()->channelDecode(bufferName, s);
-QByteArray BasicHandler::bufferEncode(const QString &bufferName, const QString &string) {
- return networkConnection()->bufferEncode(bufferName, string);
+QByteArray BasicHandler::channelEncode(const QString &bufferName, const QString &string) {
+ return networkConnection()->channelEncode(bufferName, string);
-QList<QByteArray> BasicHandler::bufferEncode(const QString &bufferName, const QStringList &stringlist) {
+QList<QByteArray> BasicHandler::channelEncode(const QString &bufferName, const QStringList &stringlist) {
- foreach(QString s, stringlist) list << networkConnection()->bufferEncode(bufferName, s);
+ foreach(QString s, stringlist) list << networkConnection()->channelEncode(bufferName, s);
QString serverDecode(const QByteArray &string);
QStringList serverDecode(const QList<QByteArray> &stringlist);
QString serverDecode(const QByteArray &string);
QStringList serverDecode(const QList<QByteArray> &stringlist);
- QString bufferDecode(const QString &bufferName, const QByteArray &string);
- QStringList bufferDecode(const QString &bufferName, const QList<QByteArray> &stringlist);
+ QString channelDecode(const QString &bufferName, const QByteArray &string);
+ QStringList channelDecode(const QString &bufferName, const QList<QByteArray> &stringlist);
QString userDecode(const QString &userNick, const QByteArray &string);
QStringList userDecode(const QString &userNick, const QList<QByteArray> &stringlist);
QByteArray serverEncode(const QString &string);
QList<QByteArray> serverEncode(const QStringList &stringlist);
QString userDecode(const QString &userNick, const QByteArray &string);
QStringList userDecode(const QString &userNick, const QList<QByteArray> &stringlist);
QByteArray serverEncode(const QString &string);
QList<QByteArray> serverEncode(const QStringList &stringlist);
- QByteArray bufferEncode(const QString &bufferName, const QString &string);
- QList<QByteArray> bufferEncode(const QString &bufferName, const QStringList &stringlist);
+ QByteArray channelEncode(const QString &bufferName, const QString &string);
+ QList<QByteArray> channelEncode(const QString &bufferName, const QStringList &stringlist);
QByteArray userEncode(const QString &userNick, const QString &string);
QList<QByteArray> userEncode(const QString &userNick, const QStringList &stringlist);
QByteArray userEncode(const QString &userNick, const QString &string);
QList<QByteArray> userEncode(const QString &userNick, const QStringList &stringlist);
void IrcServerHandler::handleKick(QString prefix, QList<QByteArray> params) {
network()->updateNickFromMask(prefix);
void IrcServerHandler::handleKick(QString prefix, QList<QByteArray> params) {
network()->updateNickFromMask(prefix);
- IrcUser *victim = network()->ircUser(serverDecode(params[1]));
+ IrcUser *victim = network()->ircUser(params[1]);
QString channel = serverDecode(params[0]);
Q_ASSERT(victim);
QString channel = serverDecode(params[0]);
Q_ASSERT(victim);
QString msg;
if(params.count() > 2) // someone got a reason!
QString msg;
if(params.count() > 2) // someone got a reason!
- msg = QString("%1 %2").arg(victim->nick()).arg(bufferDecode(channel, params[2]));
+ msg = QString("%1 %2").arg(victim->nick()).arg(channelDecode(channel, params[2]));
else
msg = victim->nick();
else
msg = victim->nick();
- if(network()->isChannelName(params[0])) {
+ if(network()->isChannelName(serverDecode(params[0]))) {
// Channel Modes
emit displayMsg(Message::Mode, BufferInfo::ChannelBuffer, serverDecode(params[0]), serverDecode(params).join(" "), prefix);
// Channel Modes
emit displayMsg(Message::Mode, BufferInfo::ChannelBuffer, serverDecode(params[0]), serverDecode(params).join(" "), prefix);
? nickFromMask(prefix)
: prefix;
? nickFromMask(prefix)
: prefix;
- networkConnection()->ctcpHandler()->parse(Message::Notice, sender, target, userDecode(prefix, params[1]));
+ networkConnection()->ctcpHandler()->parse(Message::Notice, sender, target, userDecode(sender, params[1]));
}
void IrcServerHandler::handlePart(QString prefix, QList<QByteArray> params) {
}
void IrcServerHandler::handlePart(QString prefix, QList<QByteArray> params) {
void IrcServerHandler::handleTopic(QString prefix, QList<QByteArray> params) {
IrcUser *ircuser = network()->updateNickFromMask(prefix);
QString channel = serverDecode(params[0]);
void IrcServerHandler::handleTopic(QString prefix, QList<QByteArray> params) {
IrcUser *ircuser = network()->updateNickFromMask(prefix);
QString channel = serverDecode(params[0]);
- QString topic = bufferDecode(channel, params[1]);
+ QString topic = channelDecode(channel, params[1]);
Q_ASSERT(ircuser);
network()->ircChannel(channel)->setTopic(topic);
Q_ASSERT(ircuser);
network()->ircChannel(channel)->setTopic(topic);
void IrcServerHandler::handle301(QString prefix, QList<QByteArray> params) {
Q_UNUSED(prefix);
QString nickName = serverDecode(params[0]);
void IrcServerHandler::handle301(QString prefix, QList<QByteArray> params) {
Q_UNUSED(prefix);
QString nickName = serverDecode(params[0]);
- QString awayMessage = serverDecode(params.last());
+ QString awayMessage = userDecode(nickName, params.last());
IrcUser *ircuser = network()->ircUser(nickName);
if(ircuser) {
IrcUser *ircuser = network()->ircUser(nickName);
if(ircuser) {
(real life: "<nick> <integer> <integer> :seconds idle, signon time) */
//TODO: parse real life message
void IrcServerHandler::handle317(QString prefix, QList<QByteArray> params) {
(real life: "<nick> <integer> <integer> :seconds idle, signon time) */
//TODO: parse real life message
void IrcServerHandler::handle317(QString prefix, QList<QByteArray> params) {
- Q_UNUSED(prefix)
- IrcUser *ircuser = network()->ircUser(serverDecode(params[0]));
+ Q_UNUSED(prefix);
+ QString nick = serverDecode(params[0]);
+ IrcUser *ircuser = network()->ircUser(nick);
if(ircuser) {
QDateTime now = QDateTime::currentDateTime();
int idleSecs = serverDecode(params[1]).toInt();
if(ircuser) {
QDateTime now = QDateTime::currentDateTime();
int idleSecs = serverDecode(params[1]).toInt();
ircuser->setIdleTime(now.addSecs(idleSecs));
emit displayMsg(Message::Server, BufferInfo::StatusBuffer, "", tr("[Whois] %1 is idling for %2 seconds").arg(ircuser->nick()).arg(ircuser->idleTime().secsTo(now)));
} else {
ircuser->setIdleTime(now.addSecs(idleSecs));
emit displayMsg(Message::Server, BufferInfo::StatusBuffer, "", tr("[Whois] %1 is idling for %2 seconds").arg(ircuser->nick()).arg(ircuser->idleTime().secsTo(now)));
} else {
- emit displayMsg(Message::Server, BufferInfo::StatusBuffer, "", tr("[Whois] idle message: %1").arg(serverDecode(params).join(" ")));
+ emit displayMsg(Message::Server, BufferInfo::StatusBuffer, "", tr("[Whois] idle message: %1").arg(userDecode(nick, params).join(" ")));
void IrcServerHandler::handle332(QString prefix, QList<QByteArray> params) {
Q_UNUSED(prefix);
QString channel = serverDecode(params[0]);
void IrcServerHandler::handle332(QString prefix, QList<QByteArray> params) {
Q_UNUSED(prefix);
QString channel = serverDecode(params[0]);
- QString topic = bufferDecode(channel, params[1]);
+ QString topic = channelDecode(channel, params[1]);
network()->ircChannel(channel)->setTopic(topic);
emit displayMsg(Message::Server, BufferInfo::ChannelBuffer, channel, tr("Topic for %1 is \"%2\"").arg(channel, topic));
}
network()->ircChannel(channel)->setTopic(topic);
emit displayMsg(Message::Server, BufferInfo::ChannelBuffer, channel, tr("Topic for %1 is \"%2\"").arg(channel, topic));
}
void IrcServerHandler::handle333(QString prefix, QList<QByteArray> params) {
Q_UNUSED(prefix);
QString channel = serverDecode(params[0]);
void IrcServerHandler::handle333(QString prefix, QList<QByteArray> params) {
Q_UNUSED(prefix);
QString channel = serverDecode(params[0]);
- emit displayMsg(Message::Server, BufferInfo::ChannelBuffer, channel, tr("Topic set by %1 on %2") .arg(bufferDecode(channel, params[1]), QDateTime::fromTime_t(bufferDecode(channel, params[2]).toUInt()).toString()));
+ emit displayMsg(Message::Server, BufferInfo::ChannelBuffer, channel,
+ tr("Topic set by %1 on %2") .arg(serverDecode(params[1]), QDateTime::fromTime_t(channelDecode(channel, params[2]).toUInt()).toString()));
}
/* RPL_WHOREPLY: "<channel> <user> <host> <server> <nick>
}
/* RPL_WHOREPLY: "<channel> <user> <host> <server> <nick>
#include "core.h"
#include "coresession.h"
#include "core.h"
#include "coresession.h"
#include "ircuser.h"
#include "network.h"
#include "identity.h"
#include "ircuser.h"
#include "network.h"
#include "identity.h"
}
QString NetworkConnection::serverDecode(const QByteArray &string) const {
}
QString NetworkConnection::serverDecode(const QByteArray &string) const {
- return network()->decodeString(string);
+ return network()->decodeServerString(string);
-QString NetworkConnection::bufferDecode(const QString &bufferName, const QByteArray &string) const {
- Q_UNUSED(bufferName);
- // TODO: Implement buffer-specific encodings
+QString NetworkConnection::channelDecode(const QString &bufferName, const QByteArray &string) const {
+ if(!bufferName.isEmpty()) {
+ IrcChannel *channel = network()->ircChannel(bufferName);
+ if(channel) return channel->decodeString(string);
+ }
return network()->decodeString(string);
}
return network()->decodeString(string);
}
}
QByteArray NetworkConnection::serverEncode(const QString &string) const {
}
QByteArray NetworkConnection::serverEncode(const QString &string) const {
- return network()->encodeString(string);
+ return network()->encodeServerString(string);
-QByteArray NetworkConnection::bufferEncode(const QString &bufferName, const QString &string) const {
- Q_UNUSED(bufferName);
- // TODO: Implement buffer-specific encodings
+QByteArray NetworkConnection::channelEncode(const QString &bufferName, const QString &string) const {
+ if(!bufferName.isEmpty()) {
+ IrcChannel *channel = network()->ircChannel(bufferName);
+ if(channel) return channel->encodeString(string);
+ }
return network()->encodeString(string);
}
return network()->encodeString(string);
}
//! Decode a string using the server (network) decoding.
QString serverDecode(const QByteArray &string) const;
//! Decode a string using the server (network) decoding.
QString serverDecode(const QByteArray &string) const;
- //! Decode a string using a buffer-specific encoding if one is set (and use the server encoding else).
- QString bufferDecode(const QString &bufferName, const QByteArray &string) const;
+ //! Decode a string using a channel-specific encoding if one is set (and use the standard encoding else).
+ QString channelDecode(const QString &channelName, const QByteArray &string) const;
- //! Decode a string using a IrcUser specific encoding, if one exists (using the server encoding else).
+ //! Decode a string using an IrcUser-specific encoding, if one exists (using the standaed encoding else).
QString userDecode(const QString &userNick, const QByteArray &string) const;
//! Encode a string using the server (network) encoding.
QByteArray serverEncode(const QString &string) const;
QString userDecode(const QString &userNick, const QByteArray &string) const;
//! Encode a string using the server (network) encoding.
QByteArray serverEncode(const QString &string) const;
- //! Encode a string using the buffer-specific encoding, if set, and use the server encoding else.
- QByteArray bufferEncode(const QString &bufferName, const QString &string) const;
+ //! Encode a string using the channel-specific encoding, if set, and use the standard encoding else.
+ QByteArray channelEncode(const QString &channelName, const QString &string) const;
- //! Encode a string using the user-specific encoding, if set, and use the server encoding else.
+ //! Encode a string using the user-specific encoding, if set, and use the standard encoding else.
QByteArray userEncode(const QString &userNick, const QString &string) const;
public slots:
QByteArray userEncode(const QString &userNick, const QString &string) const;
public slots:
//TODO: find suitable default hostmask if msg gives only nickname
// Example: MODE &oulu +b *!*@*
//TODO: find suitable default hostmask if msg gives only nickname
// Example: MODE &oulu +b *!*@*
- QByteArray banMsg = serverEncode(bufferInfo.bufferName()) + " +b " + bufferEncode(bufferInfo.bufferName(), msg);
+ QByteArray banMsg = serverEncode(bufferInfo.bufferName()) + " +b " + channelEncode(bufferInfo.bufferName(), msg);
emit putCmd("MODE", banMsg);
}
emit putCmd("MODE", banMsg);
}
QString reason = msg.section(' ', 1, -1, QString::SectionSkipEmpty).trimmed();
if(reason.isEmpty()) reason = networkConnection()->identity()->kickReason();
QList<QByteArray> params;
QString reason = msg.section(' ', 1, -1, QString::SectionSkipEmpty).trimmed();
if(reason.isEmpty()) reason = networkConnection()->identity()->kickReason();
QList<QByteArray> params;
- params << serverEncode(bufferInfo.bufferName()) << serverEncode(nick) << bufferEncode(bufferInfo.bufferName(), reason);
+ params << serverEncode(bufferInfo.bufferName()) << serverEncode(nick) << channelEncode(bufferInfo.bufferName(), reason);
emit putCmd("KICK", params);
}
emit putCmd("KICK", params);
}
void UserInputHandler::handleMe(const BufferInfo &bufferInfo, const QString &msg) {
if(bufferInfo.bufferName().isEmpty()) return; // server buffer
void UserInputHandler::handleMe(const BufferInfo &bufferInfo, const QString &msg) {
if(bufferInfo.bufferName().isEmpty()) return; // server buffer
- networkConnection()->ctcpHandler()->query(bufferInfo.bufferName(), "ACTION", bufferEncode(bufferInfo.bufferName(), msg));
+ networkConnection()->ctcpHandler()->query(bufferInfo.bufferName(), "ACTION", channelEncode(bufferInfo.bufferName(), msg));
emit displayMsg(Message::Action, bufferInfo.type(), bufferInfo.bufferName(), msg, network()->myNick());
}
void UserInputHandler::handleMode(const BufferInfo &bufferInfo, const QString &msg) {
Q_UNUSED(bufferInfo)
emit displayMsg(Message::Action, bufferInfo.type(), bufferInfo.bufferName(), msg, network()->myNick());
}
void UserInputHandler::handleMode(const BufferInfo &bufferInfo, const QString &msg) {
Q_UNUSED(bufferInfo)
- // TODO handle correct encoding for buffer modes (bufferEncode())
+ // TODO handle correct encoding for buffer modes (channelEncode())
emit putCmd("MODE", serverEncode(msg.split(' ', QString::SkipEmptyParts)));
}
emit putCmd("MODE", serverEncode(msg.split(' ', QString::SkipEmptyParts)));
}
void UserInputHandler::handlePart(const BufferInfo &bufferInfo, const QString &msg) {
QList<QByteArray> params;
void UserInputHandler::handlePart(const BufferInfo &bufferInfo, const QString &msg) {
QList<QByteArray> params;
- params << serverEncode(bufferInfo.bufferName()) << bufferEncode(bufferInfo.bufferName(), msg);
+ params << serverEncode(bufferInfo.bufferName()) << channelEncode(bufferInfo.bufferName(), msg);
emit putCmd("PART", params);
}
emit putCmd("PART", params);
}
void UserInputHandler::handleSay(const BufferInfo &bufferInfo, const QString &msg) {
if(bufferInfo.bufferName().isEmpty()) return; // server buffer
QList<QByteArray> params;
void UserInputHandler::handleSay(const BufferInfo &bufferInfo, const QString &msg) {
if(bufferInfo.bufferName().isEmpty()) return; // server buffer
QList<QByteArray> params;
- params << serverEncode(bufferInfo.bufferName()) << bufferEncode(bufferInfo.bufferName(), msg);
+ params << serverEncode(bufferInfo.bufferName()) << channelEncode(bufferInfo.bufferName(), msg);
emit putCmd("PRIVMSG", params);
emit displayMsg(Message::Plain, bufferInfo.type(), bufferInfo.bufferName(), msg, network()->myNick(), Message::Self);
}
emit putCmd("PRIVMSG", params);
emit displayMsg(Message::Plain, bufferInfo.type(), bufferInfo.bufferName(), msg, network()->myNick(), Message::Self);
}
void UserInputHandler::handleTopic(const BufferInfo &bufferInfo, const QString &msg) {
if(bufferInfo.bufferName().isEmpty()) return;
QList<QByteArray> params;
void UserInputHandler::handleTopic(const BufferInfo &bufferInfo, const QString &msg) {
if(bufferInfo.bufferName().isEmpty()) return;
QList<QByteArray> params;
- params << serverEncode(bufferInfo.bufferName()) << bufferEncode(bufferInfo.bufferName(), msg);
+ params << serverEncode(bufferInfo.bufferName()) << channelEncode(bufferInfo.bufferName(), msg);
emit putCmd("TOPIC", params);
}
emit putCmd("TOPIC", params);
}