+void NetworksSettingsPage::setItemState(NetworkId id, QListWidgetItem *item) {
+ if(!item) item = networkItem(id);
+ const Network *net = Client::network(id);
+ if(!net || net->isInitialized()) item->setFlags(item->flags() | Qt::ItemIsEnabled);
+ else item->setFlags(item->flags() & ~Qt::ItemIsEnabled);
+ if(net && net->connectionState() == Network::Initialized) {
+ item->setIcon(connectedIcon);
+ } else if(net && net->connectionState() != Network::Disconnected) {
+ item->setIcon(connectingIcon);
+ } else {
+ item->setIcon(disconnectedIcon);
+ }
+ if(net) {
+ // check if we already have another net of this name in the list, and replace it
+ QList<QListWidgetItem *> items = ui.networkList->findItems(net->networkName(), Qt::MatchExactly);
+ if(items.count()) {
+ foreach(QListWidgetItem *i, items) {
+ NetworkId oldid = i->data(Qt::UserRole).value<NetworkId>();
+ if(oldid > 0) continue; // only locally created nets should be replaced
+ if(oldid == currentId) item->setSelected(true);
+ delete ui.networkList->takeItem(ui.networkList->row(i));
+ networkInfos.remove(oldid);
+ break;
+ }
+ }
+ item->setText(net->networkName());
+ }
+}
+