...actually commit the translation magic...
[quassel.git] / src / common / networkinfo.cpp
index 6fc8359..62dacac 100644 (file)
@@ -24,6 +24,7 @@
 #include "ircchannel.h"
 
 #include <QDebug>
+#include <QTextCodec>
 
 #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 {
@@ -244,6 +247,41 @@ 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:
 // ====================
@@ -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);
 }