+/*** Network Handling ***/
+
+void CoreSession::createNetwork(const NetworkInfo &_info, bool useId) {
+ NetworkInfo info = _info;
+ int id;
+ if(useId && info.networkId > 0) id = info.networkId.toInt();
+ else {
+ for(id = 1; id <= _networks.count(); id++) {
+ if(!_networks.keys().contains(id)) break;
+ }
+ //qDebug() << "found free id" << i;
+ info.networkId = id;
+ }
+ Network *net = new Network(id, this);
+ connect(net, SIGNAL(connectRequested(NetworkId)), this, SLOT(connectToNetwork(NetworkId)));
+ connect(net, SIGNAL(disconnectRequested(NetworkId)), this, SLOT(disconnectFromNetwork(NetworkId)));
+ net->setNetworkInfo(info);
+ net->setProxy(signalProxy());
+ _networks[id] = net;
+ signalProxy()->synchronize(net);
+ CoreUserSettings s(user());
+ s.storeNetworkInfo(info);
+ emit networkCreated(id);
+}
+
+void CoreSession::updateNetwork(const NetworkInfo &info) {
+ if(!_networks.contains(info.networkId)) {
+ qWarning() << "Update request for unknown network received!";
+ return;
+ }
+ _networks[info.networkId]->setNetworkInfo(info);
+ CoreUserSettings s(user());
+ s.storeNetworkInfo(info);
+}
+
+void CoreSession::removeNetwork(NetworkId id) {
+ Network *net = _networks.take(id);
+ if(net) {
+ emit networkRemoved(id);
+ CoreUserSettings s(user());
+ s.removeNetworkInfo(id);
+ net->deleteLater();
+ }
+}