X-Git-Url: https://git.quassel-irc.org/?p=quassel.git;a=blobdiff_plain;f=src%2Fcommon%2Fnetwork.cpp;h=2fbde1e39b395dd0764011db1ce1867f85849529;hp=b1a17a664f957b9e6424b9d6435ed352004269fb;hb=56607f81246f04db3a0e71c9a8757d7f75d6cfcf;hpb=da3aa4136fe01e142238f0f42fe1273481037b9d diff --git a/src/common/network.cpp b/src/common/network.cpp index b1a17a66..2fbde1e3 100644 --- a/src/common/network.cpp +++ b/src/common/network.cpp @@ -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(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 +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 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 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;