joinChannel(network()->newIrcChannel(channelname));
}
-void IrcUser::partChannel(IrcChannel* channel)
+void IrcUser::partChannel(IrcChannel* channel, bool skip_sync)
{
if (_channels.contains(channel)) {
_channels.remove(channel);
disconnect(channel, nullptr, this, nullptr);
channel->part(this);
QString channelName = channel->name();
- SYNC_OTHER(partChannel, ARG(channelName))
+ if (!skip_sync) SYNC_OTHER(partChannel, ARG(channelName))
if (_channels.isEmpty() && !network()->isMe(this))
- quit();
+ quit(skip_sync);
}
}
}
}
-void IrcUser::quit()
+void IrcUser::quit(bool skip_sync)
{
QList<IrcChannel*> channels = _channels.values();
_channels.clear();
channel->part(this);
}
network()->removeIrcUser(this);
- SYNC(NO_ARG)
+ if (!skip_sync) SYNC(NO_ARG)
emit quited();
}