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))
}
}
-void Network::initSetChannels(const QStringList &channels) {
+void Network::initSetIrcChannels(const QStringList &channels) {
+ // FIXME This does not work correctly, "received data for unknown User" triggers
+ // So we disable this for now
+ return;
+
if(!_ircChannels.empty())
return;
foreach(QString channel, channels)