X-Git-Url: https://git.quassel-irc.org/?p=quassel.git;a=blobdiff_plain;f=src%2Fcommon%2Fircchannel.cpp;h=9f1a91f3cc4d58d385da996404da4e71c4b4bab3;hp=47082dd60cf5323f9dc3a9e05c74a232d677d98f;hb=e008cd12ef319c4b5f9fe5a8cc1524829551771d;hpb=4b45582f5d766e7324fe6d2abd260548ef0b9584 diff --git a/src/common/ircchannel.cpp b/src/common/ircchannel.cpp index 47082dd6..9f1a91f3 100644 --- a/src/common/ircchannel.cpp +++ b/src/common/ircchannel.cpp @@ -24,9 +24,11 @@ //#include "nicktreemodel.h" #include "signalproxy.h" #include "ircuser.h" +#include "util.h" #include #include +#include #include @@ -98,6 +100,42 @@ QString IrcChannel::userModes(const QString &nick) const { return userModes(networkInfo->ircUser(nick)); } +QTextCodec *IrcChannel::codecForEncoding() const { + return _codecForEncoding; +} + +void IrcChannel::setCodecForEncoding(const QString &name) { + setCodecForEncoding(QTextCodec::codecForName(name.toAscii())); +} + +void IrcChannel::setCodecForEncoding(QTextCodec *codec) { + _codecForEncoding = codec; +} + +QTextCodec *IrcChannel::codecForDecoding() const { + return _codecForDecoding; +} + +void IrcChannel::setCodecForDecoding(const QString &name) { + setCodecForDecoding(QTextCodec::codecForName(name.toAscii())); +} + +void IrcChannel::setCodecForDecoding(QTextCodec *codec) { + _codecForDecoding = codec; +} + +QString IrcChannel::decodeString(const QByteArray &text) const { + if(!codecForDecoding()) return networkInfo->decodeString(text); + return ::decodeString(text, _codecForDecoding); +} + +QByteArray IrcChannel::encodeString(const QString string) const { + if(codecForEncoding()) { + return _codecForEncoding->fromUnicode(string); + } + return networkInfo->encodeString(string); +} + // ==================== // PUBLIC SLOTS: // ====================