-void Client::updateCoreConnectionProgress() {
- // we'll do this in three steps:
- // 1.) networks
- // 2.) channels
- // 3.) ircusers
-
- int numNets = networks().count();
- int numNetsWaiting = 0;
-
- int numIrcUsers = 0;
- int numIrcUsersWaiting = 0;
-
- int numChannels = 0;
- int numChannelsWaiting = 0;
-
- foreach(Network *net, networks()) {
- if(! net->initialized())
- numNetsWaiting++;
-
- numIrcUsers += net->ircUsers().count();
- foreach(IrcUser *user, net->ircUsers()) {
- if(! user->initialized())
- numIrcUsersWaiting++;
- }
-
- numChannels += net->ircChannels().count();
- foreach(IrcChannel *channel, net->ircChannels()) {
- if(! channel->initialized())
- numChannelsWaiting++;
- }
- }
-
- if(numNetsWaiting > 0) {
- emit coreConnectionMsg(tr("Requesting network states..."));
- emit coreConnectionProgress(numNets - numNetsWaiting, numNets);
- return;
- }
-
- if(numIrcUsersWaiting > 0) {
- emit coreConnectionMsg(tr("Requesting User states..."));
- emit coreConnectionProgress(numIrcUsers - numIrcUsersWaiting, numIrcUsers);
- return;
- }
-
- if(numChannelsWaiting > 0) {
- emit coreConnectionMsg(tr("Requesting Channel states..."));
- emit coreConnectionProgress(numChannels - numChannelsWaiting, numChannels);
- return;
- }
-
- emit coreConnectionProgress(1,1);
- emit connected();
- emit coreConnectionStateChanged(true);
- foreach(Network *net, networks()) {
- disconnect(net, 0, this, SLOT(updateCoreConnectionProgress()));
- }
-
- // signalProxy()->dumpProxyStats();
-}