/***************************************************************************
- * Copyright (C) 2005-09 by the Quassel Project *
+ * Copyright (C) 2005-10 by the Quassel Project *
* devel@quassel-irc.org *
* *
* This program is free software; you can redistribute it and/or modify *
#include <QDebug>
IrcServerHandler::IrcServerHandler(CoreNetwork *parent)
- : BasicHandler(parent),
+ : CoreBasicHandler(parent),
_whois(false)
{
+ connect(parent, SIGNAL(disconnected(NetworkId)), this, SLOT(destroyNetsplits()));
}
IrcServerHandler::~IrcServerHandler() {
- if(!_netsplits.empty())
- qDeleteAll(_netsplits);
+ destroyNetsplits();
}
/*! Handle a raw message string sent by the server. We try to find a suitable handler, otherwise we call a default handler. */
}
QList<IrcUser *> ircUsers;
QStringList newModes = modes;
+ QStringList newUsers = users;
foreach(QString user, users) {
- IrcUser *iu = network()->updateNickFromMask(user);
+ IrcUser *iu = network()->ircUser(nickFromMask(user));
if(iu)
ircUsers.append(iu);
- else {
- newModes.removeAt(users.indexOf(user));
+ else { // the user already quit
+ int idx = users.indexOf(user);
+ newUsers.removeAt(idx);
+ newModes.removeAt(idx);
}
}
- QString msg = users.join("#:#").append("#:#").append(quitMessage);
+ QString msg = newUsers.join("#:#").append("#:#").append(quitMessage);
emit displayMsg(Message::NetsplitJoin, BufferInfo::ChannelBuffer, channel, msg);
ircChannel->joinIrcUsers(ircUsers, newModes);
}
}
}
+void IrcServerHandler::destroyNetsplits() {
+ qDeleteAll(_netsplits);
+ _netsplits.clear();
+}
/***********************************************************************************/