- QVariantList networkids = sessionState["NetworkIds"].toList();
-
- // prepare sync progress thingys...
- // FIXME: Care about removal of networks
- _numNetsToSync = networkids.count();
- updateProgress(0, _numNetsToSync);
-
- // create network objects
- foreach(QVariant networkid, networkids) {
- NetworkId netid = networkid.value<NetworkId>();
- if(Client::network(netid))
- continue;
- Network *net = new Network(netid, Client::instance());
- _netsToSync.insert(net);
- connect(net, SIGNAL(initDone()), SLOT(networkInitDone()));
- connect(net, SIGNAL(destroyed()), SLOT(networkInitDone()));
- Client::addNetwork(net);
- }
- checkSyncState();
-}
-
-void CoreConnection::networkInitDone() {
- Network *net = qobject_cast<Network *>(sender());
- Q_ASSERT(net);
- disconnect(net, 0, this, 0);
- _netsToSync.remove(net);
- updateProgress(_numNetsToSync - _netsToSync.count(), _numNetsToSync);
- checkSyncState();
-}
-
-void CoreConnection::checkSyncState() {
- if(_netsToSync.isEmpty()) {
- setState(Synchronized);
- setProgressText(QString());
- setProgressMaximum(-1);
- emit synchronized();
- }
+ QVariantList networkids = sessionState["NetworkIds"].toList();
+
+ // prepare sync progress thingys...
+ // FIXME: Care about removal of networks
+ _numNetsToSync = networkids.count();
+ updateProgress(0, _numNetsToSync);
+
+ // create network objects
+ foreach(QVariant networkid, networkids) {
+ NetworkId netid = networkid.value<NetworkId>();
+ if (Client::network(netid))
+ continue;
+ Network *net = new Network(netid, Client::instance());
+ _netsToSync.insert(net);
+ connect(net, SIGNAL(initDone()), SLOT(networkInitDone()));
+ connect(net, SIGNAL(destroyed()), SLOT(networkInitDone()));
+ Client::addNetwork(net);
+ }
+ checkSyncState();
+}
+
+
+// this is also called for destroyed networks!
+void CoreConnection::networkInitDone()
+{
+ QObject *net = sender();
+ Q_ASSERT(net);
+ disconnect(net, 0, this, 0);
+ _netsToSync.remove(net);
+ updateProgress(_numNetsToSync - _netsToSync.count(), _numNetsToSync);
+ checkSyncState();
+}
+
+
+void CoreConnection::checkSyncState()
+{
+ if (_netsToSync.isEmpty() && state() >= Synchronizing) {
+ setState(Synchronized);
+ setProgressText(tr("Synchronized to %1").arg(currentAccount().accountName()));
+ setProgressMaximum(-1);
+ emit synchronized();
+ }
+}
+
+
+void CoreConnection::doCoreSetup(const QVariant &setupData)
+{
+ QVariantMap setup;
+ setup["MsgType"] = "CoreSetupData";
+ setup["SetupData"] = setupData;
+ qobject_cast<RemotePeer *>(_peer)->writeSocketData(setup);