X-Git-Url: https://git.quassel-irc.org/?p=quassel.git;a=blobdiff_plain;f=src%2Fcommon%2Fnetworkinfo.cpp;h=8836a702a0e8b60b280ddb1c0a8f863988311fee;hp=75a45c0ef5b4517e735b962b048e20413ec618c1;hb=45d9ea6ed5d64eec3ca351fdcf7610c7cff3529d;hpb=7795adca52f35204f8c354da6fcc5d8e8ee35531 diff --git a/src/common/networkinfo.cpp b/src/common/networkinfo.cpp index 75a45c0e..8836a702 100644 --- a/src/common/networkinfo.cpp +++ b/src/common/networkinfo.cpp @@ -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 ¶m) 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,10 +180,27 @@ IrcUser *NetworkInfo::newIrcUser(const QString &hostmask) { _ircUsers[nick] = ircuser; emit ircUserAdded(hostmask); } - return _ircUsers[nick]; + return _ircUsers[nick]; } -IrcUser *NetworkInfo::ircUser(const QString &nickname) const { +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) + removeIrcUser(ircuser); +} + +IrcUser *NetworkInfo::ircUser(QString nickname) const { + nickname = nickname.toLower(); if(_ircUsers.contains(nickname)) return _ircUsers[nickname]; else @@ -195,7 +212,7 @@ QList 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()) @@ -208,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 @@ -304,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)) { @@ -321,17 +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(sender()); Q_ASSERT(ircuser); - _ircUsers.remove(_ircUsers.key(ircuser)); + removeIrcUser(ircuser); } void NetworkInfo::channelDestroyed() { @@ -356,8 +374,8 @@ void NetworkInfo::determinePrefixes() { _prefixes = PREFIX.section(")", 1); _prefixModes = PREFIX.mid(1).section(")", 0, 0); } else { - QString defaultPrefixes("@%+"); - QString defaultPrefixModes("ohv"); + QString defaultPrefixes("~&@%+"); + QString defaultPrefixModes("qaohv"); // we just assume that in PREFIX are only prefix chars stored for(int i = 0; i < defaultPrefixes.size(); i++) {