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);
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())
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) {
}
}
-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))
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()) {
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;