- 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();
-}
-
-void Client::recvSessionData(const QString &key, const QVariant &data) {
- sessionData[key] = data;
- emit sessionDataChanged(key, data);
- emit sessionDataChanged(key);
-}
-
-void Client::storeSessionData(const QString &key, const QVariant &data) {
- // Not sure if this is a good idea, but we'll try it anyway:
- // Calling this function only sends a signal to core. Data is stored upon reception of the update signal,
- // rather than immediately.
- emit instance()->sendSessionData(key, data);
-}
-
-QVariant Client::retrieveSessionData(const QString &key, const QVariant &def) {
- if(instance()->sessionData.contains(key)) return instance()->sessionData[key];
- else return def;
-}
-
-QStringList Client::sessionDataKeys() {
- return instance()->sessionData.keys();
-}
-
-void Client::coreSocketError(QAbstractSocket::SocketError) {
- emit coreConnectionError(socket->errorString());
- socket->deleteLater();
-}
-
-void Client::coreHasData() {
- QVariant item;
- if(SignalProxy::readDataFromDevice(socket, blockSize, item)) {
- emit recvPartialItem(1,1);
- QVariantMap msg = item.toMap();
- if (!msg["StartWizard"].toBool()) {
- recvCoreState(msg["Reply"]);