X-Git-Url: https://git.quassel-irc.org/?p=quassel.git;a=blobdiff_plain;f=src%2Fcommon%2Fnetworkinfo.cpp;h=62dacace1d6c379e340d543b9a04ecf5f5d4f601;hp=918be51626477db6950dba07c13335350e15e69f;hb=f6f6f3e368543f0a4dce1dae772f161d7e357064;hpb=00052de200f8b5f149a486cff1fb4623e1b99ed7 diff --git a/src/common/networkinfo.cpp b/src/common/networkinfo.cpp index 918be516..62dacace 100644 --- a/src/common/networkinfo.cpp +++ b/src/common/networkinfo.cpp @@ -24,6 +24,7 @@ #include "ircchannel.h" #include +#include #include "util.h" @@ -39,7 +40,9 @@ NetworkInfo::NetworkInfo(const uint &networkid, QObject *parent) _currentServer(QString()), _prefixes(QString()), _prefixModes(QString()), - _proxy(NULL) + _proxy(0), + _codecForEncoding(0), + _codecForDecoding(0) { setObjectName(QString::number(networkid)); } @@ -75,7 +78,7 @@ bool NetworkInfo::isMyNick(const QString &nick) const { } bool NetworkInfo::isMyNick(IrcUser *ircuser) const { - return (ircuser->nick().toLower() == myNick()); + return (ircuser->nick().toLower() == myNick().toLower()); } bool NetworkInfo::isChannelName(const QString &channelname) const { @@ -163,7 +166,7 @@ QString NetworkInfo::support(const QString ¶m) const { } IrcUser *NetworkInfo::newIrcUser(const QString &hostmask) { - QString nick(nickFromMask(hostmask)); + QString nick(nickFromMask(hostmask).toLower()); if(!_ircUsers.contains(nick)) { IrcUser *ircuser = new IrcUser(hostmask, this); // mark IrcUser as already initialized to keep the SignalProxy from requesting initData @@ -180,7 +183,7 @@ IrcUser *NetworkInfo::newIrcUser(const QString &hostmask) { _ircUsers[nick] = ircuser; emit ircUserAdded(hostmask); } - return _ircUsers[nick]; + return _ircUsers[nick]; } void NetworkInfo::removeIrcUser(IrcUser *ircuser) { @@ -199,7 +202,8 @@ void NetworkInfo::removeIrcUser(QString nick) { removeIrcUser(ircuser); } -IrcUser *NetworkInfo::ircUser(const QString &nickname) const { +IrcUser *NetworkInfo::ircUser(QString nickname) const { + nickname = nickname.toLower(); if(_ircUsers.contains(nickname)) return _ircUsers[nickname]; else @@ -210,9 +214,8 @@ QList NetworkInfo::ircUsers() const { return _ircUsers.values(); } -IrcChannel *NetworkInfo::newIrcChannel(QString channelname) { - channelname = channelname.toLower(); - if(!_ircChannels.contains(channelname)) { +IrcChannel *NetworkInfo::newIrcChannel(const QString &channelname) { + if(!_ircChannels.contains(channelname.toLower())) { IrcChannel *channel = new IrcChannel(channelname, this); // mark IrcUser as already initialized to keep the SignalProxy from requesting initData if(initialized()) @@ -225,10 +228,10 @@ IrcChannel *NetworkInfo::newIrcChannel(QString channelname) { connect(channel, SIGNAL(initDone()), this, SIGNAL(ircChannelInitDone())); connect(channel, SIGNAL(destroyed()), this, SLOT(channelDestroyed())); - _ircChannels[channelname] = channel; + _ircChannels[channelname.toLower()] = channel; emit ircChannelAdded(channelname); } - return _ircChannels[channelname]; + return _ircChannels[channelname.toLower()]; } @@ -244,6 +247,41 @@ QList NetworkInfo::ircChannels() const { return _ircChannels.values(); } +QTextCodec *NetworkInfo::codecForEncoding() const { + return _codecForEncoding; +} + +void NetworkInfo::setCodecForEncoding(const QString &name) { + setCodecForEncoding(QTextCodec::codecForName(name.toAscii())); +} + +void NetworkInfo::setCodecForEncoding(QTextCodec *codec) { + _codecForEncoding = codec; +} + +QTextCodec *NetworkInfo::codecForDecoding() const { + return _codecForDecoding; +} + +void NetworkInfo::setCodecForDecoding(const QString &name) { + setCodecForDecoding(QTextCodec::codecForName(name.toAscii())); +} + +void NetworkInfo::setCodecForDecoding(QTextCodec *codec) { + _codecForDecoding = codec; +} + +QString NetworkInfo::decodeString(const QByteArray &text) const { + return ::decodeString(text, _codecForDecoding); +} + +QByteArray NetworkInfo::encodeString(const QString string) const { + if(_codecForEncoding) { + return _codecForEncoding->fromUnicode(string); + } + return string.toAscii(); +} + // ==================== // Public Slots: // ==================== @@ -322,7 +360,7 @@ void NetworkInfo::initSetChannels(const QStringList &channels) { } IrcUser *NetworkInfo::updateNickFromMask(const QString &mask) { - QString nick(nickFromMask(mask)); + QString nick(nickFromMask(mask).toLower()); IrcUser *ircuser; if(_ircUsers.contains(nick)) { @@ -339,10 +377,10 @@ void NetworkInfo::ircUserNickChanged(QString newnick) { if(oldnick.isNull()) return; + + if(newnick.toLower() != oldnick) _ircUsers[newnick.toLower()] = _ircUsers.take(oldnick); - _ircUsers[newnick] = _ircUsers.take(oldnick); - - if(myNick() == oldnick) + if(myNick().toLower() == oldnick) setMyNick(newnick); }