// I think this is unnecessary since IrcUsers have us as their daddy :)
Network::~Network() {
+ emit aboutToBeDestroyed();
// QHashIterator<QString, IrcUser *> ircuser(_ircUsers);
// while (ircuser.hasNext()) {
// ircuser.next();
ircuser->deleteLater();
}
-void Network::removeIrcUser(QString nick) {
+void Network::removeChansAndUsers() {
+ QList<IrcUser *> users = ircUsers();
+ foreach(IrcUser *user, users) {
+ removeIrcUser(user);
+ }
+ QList<IrcChannel *> channels = ircChannels();
+ foreach(IrcChannel *channel, channels) {
+ removeIrcChannel(channel);
+ }
+}
+
+void Network::removeIrcUser(const QString &nick) {
IrcUser *ircuser;
if((ircuser = ircUser(nick)) != 0)
removeIrcUser(ircuser);
void Network::setConnected(bool connected) {
_connected = connected;
+ if(!connected)
+ removeChansAndUsers();
emit connectedSet(connected);
}
emit ircChannelInitDone(ircchannel);
}
+void Network::removeIrcChannel(IrcChannel *channel) {
+ QString chanName = _ircChannels.key(channel);
+ if(chanName.isNull())
+ return;
+
+ _ircChannels.remove(chanName);
+ disconnect(channel, 0, this, 0);
+ emit ircChannelRemoved(chanName);
+ emit ircChannelRemoved(channel);
+ channel->deleteLater();
+}
+
+void Network::removeIrcChannel(const QString &channel) {
+ IrcChannel *chan;
+ if((chan = ircChannel(channel)) != 0)
+ removeIrcChannel(chan);
+}
+
void Network::channelDestroyed() {
IrcChannel *channel = static_cast<IrcChannel *>(sender());
Q_ASSERT(channel);