+ QStringList existing;
+ for(int i = 0; i < ui.networkList->count(); i++) existing << ui.networkList->item(i)->text();
+ NetworkEditDlg 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;
+
+ // defaults
+ info.useRandomServer = false;
+ info.useAutoReconnect = true;
+ info.autoReconnectInterval = 60;
+ info.autoReconnectRetries = 20;
+ info.unlimitedReconnectRetries = false;
+ info.useAutoIdentify = false;
+ info.autoIdentifyService = "NickServ";
+ info.rejoinChannels = true;
+
+ 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?").arg(networkInfos[netid].networkName),
+ QMessageBox::Yes|QMessageBox::No, QMessageBox::No);
+ if(ret == QMessageBox::Yes) {
+ currentId = 0;
+ networkInfos.remove(netid);
+ delete ui.networkList->takeItem(ui.networkList->row(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();
+ NetworkEditDlg 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();
+ }
+}
+
+void NetworksSettingsPage::on_connectNow_clicked() {
+ if(!ui.networkList->selectedItems().count()) return;
+ NetworkId id = ui.networkList->selectedItems()[0]->data(Qt::UserRole).value<NetworkId>();
+ const Network *net = Client::network(id);
+ if(!net) return;
+ if(net->connectionState() == Network::Disconnected) net->requestConnect();
+ else net->requestDisconnect();
+}
+
+/*** Server list ***/