+bool Client::isConnected() {
+ return instance()->_connectedToCore;
+}
+
+bool Client::isSynced() {
+ return instance()->_syncedToCore;
+}
+
+/*** Network handling ***/
+
+QList<NetworkId> Client::networkIds() {
+ return instance()->_networks.keys();
+}
+
+const Network * Client::network(NetworkId networkid) {
+ if(instance()->_networks.contains(networkid)) return instance()->_networks[networkid];
+ else return 0;
+}
+
+void Client::createNetwork(const NetworkInfo &info) {
+ emit instance()->requestCreateNetwork(info);
+}
+
+void Client::updateNetwork(const NetworkInfo &info) {
+ emit instance()->requestUpdateNetwork(info);
+}
+
+void Client::removeNetwork(NetworkId id) {
+ emit instance()->requestRemoveNetwork(id);
+}
+
+void Client::addNetwork(Network *net) {
+ net->setProxy(signalProxy());
+ signalProxy()->synchronize(net);
+ networkModel()->attachNetwork(net);
+ connect(net, SIGNAL(destroyed()), instance(), SLOT(networkDestroyed()));
+ instance()->_networks[net->networkId()] = net;
+ emit instance()->networkCreated(net->networkId());
+}
+
+void Client::coreNetworkCreated(NetworkId id) {
+ if(_networks.contains(id)) {
+ qWarning() << "Creation of already existing network requested!";
+ return;
+ }
+ Network *net = new Network(id, this);
+ addNetwork(net);
+}
+
+void Client::coreNetworkRemoved(NetworkId id) {
+ if(!_networks.contains(id)) return;
+ Network *net = _networks.take(id);
+ emit networkRemoved(net->networkId());
+ net->deleteLater();
+}