Make BufferInfo qDebug()able as per EgS' request.
[quassel.git] / src / common / networkinfo.cpp
index 0ef2f1f..8836a70 100644 (file)
@@ -1,11 +1,11 @@
 /***************************************************************************
- *   Copyright (C) 2005-07 by The Quassel Team                             *
+ *   Copyright (C) 2005-07 by the Quassel IRC Team                         *
  *   devel@quassel-irc.org                                                 *
  *                                                                         *
  *   This program is free software; you can redistribute it and/or modify  *
  *   it under the terms of the GNU General Public License as published by  *
  *   the Free Software Foundation; either version 2 of the License, or     *
- *   (at your option) any later version.                                   *
+ *   (at your option) version 3.                                           *
  *                                                                         *
  *   This program is distributed in the hope that it will be useful,       *
  *   but WITHOUT ANY WARRANTY; without even the implied warranty of        *
@@ -163,7 +163,7 @@ QString NetworkInfo::support(const QString &param) 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,18 +180,27 @@ IrcUser *NetworkInfo::newIrcUser(const QString &hostmask) {
     _ircUsers[nick] = ircuser;
     emit ircUserAdded(hostmask);
   }
-  return  _ircUsers[nick];
+  return _ircUsers[nick];
+}
+
+void NetworkInfo::removeIrcUser(IrcUser *ircuser) {
+  QString nick = _ircUsers.key(ircuser);
+  if(nick.isNull())
+    return;
+
+  _ircUsers.remove(nick);
+  ircuser->deleteLater();
+  emit ircUserRemoved(nick);
 }
 
 void NetworkInfo::removeIrcUser(QString nick) {
   IrcUser *ircuser;
-  if((ircuser = ircUser(nick)) != 0) {
-    ircuser->deleteLater();
-    emit ircUserRemoved(nick);
-  }
+  if((ircuser = ircUser(nick)) != 0)
+    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
@@ -203,7 +212,7 @@ QList<IrcUser *> NetworkInfo::ircUsers() const {
 }
 
 IrcChannel *NetworkInfo::newIrcChannel(const QString &channelname) {
-  if(!_ircChannels.contains(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())
@@ -216,14 +225,15 @@ IrcChannel *NetworkInfo::newIrcChannel(const 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()];
 }
 
 
-IrcChannel *NetworkInfo::ircChannel(const QString &channelname) {
+IrcChannel *NetworkInfo::ircChannel(QString channelname) {
+  channelname = channelname.toLower();
   if(_ircChannels.contains(channelname))
     return _ircChannels[channelname];
   else
@@ -312,7 +322,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)) {
@@ -329,19 +339,17 @@ 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);
 }
 
 void NetworkInfo::ircUserDestroyed() {
   IrcUser *ircuser = static_cast<IrcUser *>(sender());
   Q_ASSERT(ircuser);
-  QString nick = _ircUsers.key(ircuser);
-  _ircUsers.remove(nick);
-  emit ircUserRemoved(nick);
+  removeIrcUser(ircuser);
 }
 
 void NetworkInfo::channelDestroyed() {