X-Git-Url: https://git.quassel-irc.org/?p=quassel.git;a=blobdiff_plain;f=src%2Fcommon%2Fnetwork.cpp;h=c7343ca31735a5528dddf9cc5dbc847e9da567ff;hp=7fa2a2ae63f75e815febe2cb9e48b28a778f66ef;hb=1ed8c48b0e7d309e1a92c905a19fcb7128b73d3d;hpb=28f1a9d9d96645757691cdea19500aefce4bcdac diff --git a/src/common/network.cpp b/src/common/network.cpp index 7fa2a2ae..c7343ca3 100644 --- a/src/common/network.cpp +++ b/src/common/network.cpp @@ -301,6 +301,21 @@ IrcUser *Network::newIrcUser(const QByteArray &hostmask) { return newIrcUser(decodeServerString(hostmask)); } +void Network::ircUserDestroyed() { + IrcUser *ircUser = static_cast(sender()); + if(!ircUser) + return; + + QHash::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 +328,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 users = ircUsers(); foreach(IrcUser *user, users) { @@ -324,12 +345,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)) @@ -651,7 +666,11 @@ void Network::initSetIrcUsers(const QStringList &hostmasks) { } } -void Network::initSetChannels(const QStringList &channels) { +void Network::initSetIrcChannels(const QStringList &channels) { + // FIXME This does not work correctly, "received data for unknown User" triggers + // So we disable this for now + return; + if(!_ircChannels.empty()) return; foreach(QString channel, channels)