X-Git-Url: https://git.quassel-irc.org/?a=blobdiff_plain;ds=sidebyside;f=src%2Fcommon%2Fircuser.cpp;h=91b3a2b2ea7d16ff8f341bc5699619188cff6691;hb=f6f6f3e368543f0a4dce1dae772f161d7e357064;hp=01bc963435b1f1937c45e3833258230ad69934dd;hpb=27be9c5a706bf690921617bf66614c4479550c4d;p=quassel.git diff --git a/src/common/ircuser.cpp b/src/common/ircuser.cpp index 01bc9634..91b3a2b2 100644 --- a/src/common/ircuser.cpp +++ b/src/common/ircuser.cpp @@ -25,6 +25,7 @@ #include "signalproxy.h" #include "ircchannel.h" +#include #include IrcUser::IrcUser(const QString &hostmask, NetworkInfo *networkinfo) @@ -33,13 +34,15 @@ IrcUser::IrcUser(const QString &hostmask, NetworkInfo *networkinfo) _nick(nickFromMask(hostmask)), _user(userFromMask(hostmask)), _host(hostFromMask(hostmask)), - networkInfo(networkinfo) + networkInfo(networkinfo), + _codecForEncoding(0), + _codecForDecoding(0) { updateObjectName(); } IrcUser::~IrcUser() { - qDebug() << nick() << "destroyed."; + //qDebug() << nick() << "destroyed."; } // ==================== @@ -78,6 +81,42 @@ QStringList IrcUser::channels() const { return chanList; } +QTextCodec *IrcUser::codecForEncoding() const { + return _codecForEncoding; +} + +void IrcUser::setCodecForEncoding(const QString &name) { + setCodecForEncoding(QTextCodec::codecForName(name.toAscii())); +} + +void IrcUser::setCodecForEncoding(QTextCodec *codec) { + _codecForEncoding = codec; +} + +QTextCodec *IrcUser::codecForDecoding() const { + return _codecForDecoding; +} + +void IrcUser::setCodecForDecoding(const QString &name) { + setCodecForDecoding(QTextCodec::codecForName(name.toAscii())); +} + +void IrcUser::setCodecForDecoding(QTextCodec *codec) { + _codecForDecoding = codec; +} + +QString IrcUser::decodeString(const QByteArray &text) const { + if(!codecForDecoding()) return networkInfo->decodeString(text); + return ::decodeString(text, codecForDecoding()); +} + +QByteArray IrcUser::encodeString(const QString string) const { + if(codecForEncoding()) { + return codecForEncoding()->fromUnicode(string); + } + return networkInfo->encodeString(string); +} + // ==================== // PUBLIC SLOTS: // ====================