From: Manuel Nickschas Date: Sat, 3 May 2008 17:59:11 +0000 (+0000) Subject: Fixing autoWHO. X-Git-Tag: 0.3.0~425^2~10 X-Git-Url: https://git.quassel-irc.org/?p=quassel.git;a=commitdiff_plain;h=2f515f5ea173837eae501292c45af69793da6d60 Fixing autoWHO. --- diff --git a/src/core/networkconnection.cpp b/src/core/networkconnection.cpp index 15b081cc..1adf827a 100644 --- a/src/core/networkconnection.cpp +++ b/src/core/networkconnection.cpp @@ -285,6 +285,7 @@ void NetworkConnection::socketError(QAbstractSocket::SocketError) { #ifndef QT_NO_OPENSSL void NetworkConnection::sslErrors(const QList &sslErrors) { + Q_UNUSED(sslErrors) socket.ignoreSslErrors(); /* TODO errorhandling QVariantMap errmsg; @@ -433,7 +434,7 @@ void NetworkConnection::sendAutoWho() { IrcChannel *ircchan = network()->ircChannel(chan); if(!ircchan) continue; if(_autoWhoNickLimit > 0 && ircchan->ircUsers().count() > _autoWhoNickLimit) continue; - _autoWhoInProgress.insert(chan); + _autoWhoInProgress[chan]++; putRawLine("WHO " + serverEncode(chan)); if(_autoWhoQueue.isEmpty() && _autoWhoEnabled && !_autoWhoCycleTimer.isActive()) { // Timer was stopped, means a new cycle is due immediately @@ -453,18 +454,20 @@ void NetworkConnection::startAutoWhoCycle() { } bool NetworkConnection::setAutoWhoDone(const QString &channel) { - return _autoWhoInProgress.remove(channel); + if(_autoWhoInProgress.value(channel.toLower(), 0) <= 0) return false; + _autoWhoInProgress[channel.toLower()]--; + return true; } void NetworkConnection::setChannelJoined(const QString &channel) { emit channelJoined(networkId(), channel, _channelKeys[channel.toLower()]); - _autoWhoQueue.prepend(channel); // prepend so this new chan is the first to be checked + _autoWhoQueue.prepend(channel.toLower()); // prepend so this new chan is the first to be checked } void NetworkConnection::setChannelParted(const QString &channel) { removeChannelKey(channel); - _autoWhoQueue.removeAll(channel); - _autoWhoInProgress.remove(channel); + _autoWhoQueue.removeAll(channel.toLower()); + _autoWhoInProgress.remove(channel.toLower()); emit channelParted(networkId(), channel); } diff --git a/src/core/networkconnection.h b/src/core/networkconnection.h index 0745e9ef..9b4126d0 100644 --- a/src/core/networkconnection.h +++ b/src/core/networkconnection.h @@ -86,7 +86,7 @@ public: inline QString channelKey(const QString &channel) const { return _channelKeys.value(channel.toLower(), QString()); } inline QStringList persistentChannels() const { return _channelKeys.keys(); } - inline bool isAutoWhoInProgress(const QString &channel) const { return _autoWhoInProgress.contains(channel); } + inline bool isAutoWhoInProgress(const QString &channel) const { return _autoWhoInProgress.value(channel.toLower(), 0); } public slots: // void setServerOptions(); @@ -176,7 +176,7 @@ private: bool _autoWhoEnabled; QStringList _autoWhoQueue; - QSet _autoWhoInProgress; + QHash _autoWhoInProgress; int _autoWhoInterval; int _autoWhoNickLimit; int _autoWhoDelay;