+ QStringList existing;
+ for(int i = 0; i < ui.networkList->count(); i++) existing << ui.networkList->item(i)->text();
+ NetworkEditDlgNew dlg(QString(), existing, this);
+ if(dlg.exec() == QDialog::Accepted) {
+ NetworkId id;
+ for(id = 1; id <= networkInfos.count(); id++) {
+ widgetHasChanged();
+ if(!networkInfos.keys().contains(-id.toInt())) break;
+ }
+ id = -id.toInt();
+ NetworkInfo info;
+ info.networkId = id;
+ info.networkName = dlg.networkName();
+ info.identity = 1;
+ networkInfos[id] = info;
+ QListWidgetItem *item = insertNetwork(info);
+ ui.networkList->setCurrentItem(item);
+ setWidgetStates();
+ }
+}
+
+void NetworksSettingsPage::on_deleteNetwork_clicked() {
+ if(ui.networkList->selectedItems().count()) {
+ NetworkId netid = ui.networkList->selectedItems()[0]->data(Qt::UserRole).value<NetworkId>();
+ int ret = QMessageBox::question(this, tr("Delete Network?"),
+ tr("Do you really want to delete the network \"%1\" and all related settings, including the backlog?"
+ "<br><br><em>NOTE: Backlog deletion hasn't actually been implemented yet.</em>").arg(networkInfos[netid].networkName),
+ QMessageBox::Yes|QMessageBox::No, QMessageBox::No);
+ if(ret == QMessageBox::Yes) {
+ currentId = 0;
+ networkInfos.remove(netid); qDebug() << netid << networkInfos.count();
+ delete ui.networkList->selectedItems()[0];
+ ui.networkList->setCurrentRow(qMin(ui.networkList->currentRow()+1, ui.networkList->count()-1));
+ setWidgetStates();
+ widgetHasChanged();
+ }
+ }
+}
+
+void NetworksSettingsPage::on_renameNetwork_clicked() {
+ if(!ui.networkList->selectedItems().count()) return;
+ QString old = ui.networkList->selectedItems()[0]->text();
+ QStringList existing;
+ for(int i = 0; i < ui.networkList->count(); i++) existing << ui.networkList->item(i)->text();
+ NetworkEditDlgNew dlg(old, existing, this);
+ if(dlg.exec() == QDialog::Accepted) {
+ ui.networkList->selectedItems()[0]->setText(dlg.networkName());
+ NetworkId netid = ui.networkList->selectedItems()[0]->data(Qt::UserRole).value<NetworkId>();
+ networkInfos[netid].networkName = dlg.networkName();
+ widgetHasChanged();
+ }
+}
+
+/*** Server list ***/
+
+void NetworksSettingsPage::on_serverList_itemSelectionChanged() {
+ setWidgetStates();
+}
+
+void NetworksSettingsPage::on_addServer_clicked() {
+ if(currentId == 0) return;
+ ServerEditDlgNew dlg(QVariantMap(), this);
+ if(dlg.exec() == QDialog::Accepted) {
+ networkInfos[currentId].serverList.append(dlg.serverData());
+ displayNetwork(currentId);
+ ui.serverList->setCurrentRow(ui.serverList->count()-1);
+ widgetHasChanged();
+ }