X-Git-Url: https://git.quassel-irc.org/?p=quassel.git;a=blobdiff_plain;f=src%2Fcommon%2Fnetworkinfo.cpp;h=19f4233e9da9f9797e38813ca812cfa5e8b73279;hp=89e88ccdaf86630959027cd79f54c0a0f50973b6;hb=b797e5f581b10a517c30f78cb53f813af741e261;hpb=9ac6ae4ee26819874d8843ba09f38a24088d663d diff --git a/src/common/networkinfo.cpp b/src/common/networkinfo.cpp index 89e88ccd..19f4233e 100644 --- a/src/common/networkinfo.cpp +++ b/src/common/networkinfo.cpp @@ -1,5 +1,5 @@ /*************************************************************************** - * Copyright (C) 2005-07 by the Quassel IRC Team * + * Copyright (C) 2005-08 by the Quassel Project * * devel@quassel-irc.org * * * * This program is free software; you can redistribute it and/or modify * @@ -24,6 +24,7 @@ #include "ircchannel.h" #include +#include #include "util.h" @@ -31,7 +32,7 @@ // Public: // ==================== NetworkInfo::NetworkInfo(const uint &networkid, QObject *parent) - : QObject(parent), + : SyncableObject(parent), _networkId(networkid), _initialized(false), _myNick(QString()), @@ -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)); } @@ -183,6 +186,10 @@ IrcUser *NetworkInfo::newIrcUser(const QString &hostmask) { return _ircUsers[nick]; } +IrcUser *NetworkInfo::newIrcUser(const QByteArray &hostmask) { + return newIrcUser(decodeString(hostmask)); +} + void NetworkInfo::removeIrcUser(IrcUser *ircuser) { QString nick = _ircUsers.key(ircuser); if(nick.isNull()) @@ -207,6 +214,10 @@ IrcUser *NetworkInfo::ircUser(QString nickname) const { return 0; } +IrcUser *NetworkInfo::ircUser(const QByteArray &nickname) const { + return ircUser(decodeString(nickname)); +} + QList NetworkInfo::ircUsers() const { return _ircUsers.values(); } @@ -231,6 +242,9 @@ IrcChannel *NetworkInfo::newIrcChannel(const QString &channelname) { return _ircChannels[channelname.toLower()]; } +IrcChannel *NetworkInfo::newIrcChannel(const QByteArray &channelname) { + return newIrcChannel(decodeString(channelname)); +} IrcChannel *NetworkInfo::ircChannel(QString channelname) { channelname = channelname.toLower(); @@ -240,10 +254,50 @@ IrcChannel *NetworkInfo::ircChannel(QString channelname) { return 0; } +IrcChannel *NetworkInfo::ircChannel(const QByteArray &channelname) { + return ircChannel(decodeString(channelname)); +} + + 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: // ====================