Yet another protocol break (I warned you...).
[quassel.git] / src / common / network.cpp
index b1a17a6..2fbde1e 100644 (file)
@@ -290,6 +290,7 @@ IrcUser *Network::newIrcUser(const QString &hostmask) {
     
     connect(ircuser, SIGNAL(nickSet(QString)), this, SLOT(ircUserNickChanged(QString)));
     connect(ircuser, SIGNAL(initDone()), this, SLOT(ircUserInitDone()));
+    connect(ircuser, SIGNAL(destroyed()), this, SLOT(ircUserDestroyed()));
     _ircUsers[nick] = ircuser;
     emit ircUserAdded(hostmask);
     emit ircUserAdded(ircuser);
@@ -301,6 +302,21 @@ IrcUser *Network::newIrcUser(const QByteArray &hostmask) {
   return newIrcUser(decodeServerString(hostmask));
 }
 
+void Network::ircUserDestroyed() {
+  IrcUser *ircUser = static_cast<IrcUser *>(sender());
+  if(!ircUser)
+    return;
+
+  QHash<QString, IrcUser *>::iterator ircUserIter = _ircUsers.begin();
+  while(ircUserIter != _ircUsers.end()) {
+    if(ircUser == *ircUserIter) {
+      ircUserIter = _ircUsers.erase(ircUserIter);
+      break;
+    }
+    ircUserIter++;
+  }
+}
+
 void Network::removeIrcUser(IrcUser *ircuser) {
   QString nick = _ircUsers.key(ircuser);
   if(nick.isNull())
@@ -313,6 +329,12 @@ void Network::removeIrcUser(IrcUser *ircuser) {
   ircuser->deleteLater();
 }
 
+void Network::removeIrcUser(const QString &nick) {
+  IrcUser *ircuser;
+  if((ircuser = ircUser(nick)) != 0)
+    removeIrcUser(ircuser);
+}
+
 void Network::removeChansAndUsers() {
   QList<IrcUser *> users = ircUsers();
   foreach(IrcUser *user, users) {
@@ -324,12 +346,6 @@ void Network::removeChansAndUsers() {
   }
 }
 
-void Network::removeIrcUser(const QString &nick) {
-  IrcUser *ircuser;
-  if((ircuser = ircUser(nick)) != 0)
-    removeIrcUser(ircuser);
-}
-
 IrcUser *Network::ircUser(QString nickname) const {
   nickname = nickname.toLower();
   if(_ircUsers.contains(nickname))
@@ -631,14 +647,6 @@ QStringList Network::initIrcChannels() const {
   return _ircChannels.keys();
 }
 
-QStringList Network::initPersistentChannels() const {
-  QStringList list;
-  foreach(QString chan, _persistentChannels.keys()) {
-    list << QString("%1/%2").arg(chan).arg(_persistentChannels.value(chan));
-  }
-  return list;
-}
-
 void Network::initSetSupports(const QVariantMap &supports) {
   QMapIterator<QString, QVariant> iter(supports);
   while(iter.hasNext()) {
@@ -670,28 +678,6 @@ void Network::initSetIrcChannels(const QStringList &channels) {
     newIrcChannel(channel);
 }
 
-void Network::initSetPersistentChannels(const QStringList &channels) {
-  foreach(QString chan, channels) {
-    QStringList l = chan.split("/");
-    _persistentChannels[l[0]] = l[1];
-  }
-}
-
-void Network::addPersistentChannel(const QString &channel, const QString &key) {
-  _persistentChannels[channel.toLower()] = key;
-  emit persistentChannelAdded(channel, key);
-}
-
-void Network::removePersistentChannel(const QString &channel) {
-  _persistentChannels.remove(channel.toLower());
-  emit persistentChannelRemoved(channel);
-}
-
-void Network::setPersistentChannelKey(const QString &channel, const QString &key) {
-  _persistentChannels[channel.toLower()] = key;
-  emit persistentChannelKeySet(channel, key);
-}
-
 IrcUser *Network::updateNickFromMask(const QString &mask) {
   QString nick(nickFromMask(mask).toLower());
   IrcUser *ircuser;