/***************************************************************************
- * 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 *
#include "ircchannel.h"
#include <QDebug>
+#include <QTextCodec>
#include "util.h"
_currentServer(QString()),
_prefixes(QString()),
_prefixModes(QString()),
- _proxy(NULL)
+ _proxy(0),
+ _codecForEncoding(0),
+ _codecForDecoding(0)
{
setObjectName(QString::number(networkid));
}
}
bool NetworkInfo::isMyNick(IrcUser *ircuser) const {
- return (ircuser->nick().toLower() == myNick());
+ return (ircuser->nick().toLower() == myNick().toLower());
}
bool NetworkInfo::isChannelName(const QString &channelname) const {
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())
return 0;
}
+IrcUser *NetworkInfo::ircUser(const QByteArray &nickname) const {
+ return ircUser(decodeString(nickname));
+}
+
QList<IrcUser *> NetworkInfo::ircUsers() const {
return _ircUsers.values();
}
return _ircChannels[channelname.toLower()];
}
+IrcChannel *NetworkInfo::newIrcChannel(const QByteArray &channelname) {
+ return newIrcChannel(decodeString(channelname));
+}
IrcChannel *NetworkInfo::ircChannel(QString channelname) {
channelname = channelname.toLower();
return 0;
}
+IrcChannel *NetworkInfo::ircChannel(const QByteArray &channelname) {
+ return ircChannel(decodeString(channelname));
+}
+
+
QList<IrcChannel *> 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:
// ====================
}
IrcUser *NetworkInfo::updateNickFromMask(const QString &mask) {
- QString nick(nickFromMask(mask));
+ QString nick(nickFromMask(mask).toLower());
IrcUser *ircuser;
if(_ircUsers.contains(nick)) {
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);
}