X-Git-Url: https://git.quassel-irc.org/?a=blobdiff_plain;f=src%2Fqtui%2Fsettingspages%2Fnetworkssettingspage.cpp;h=c45c972940ae04f429d8a9301a20a5085d25f992;hb=e04d897d69a62d0b6062d788812ca12d6d85b75d;hp=7c98306fb0dc3fcebd5c8340694a1f141241030b;hpb=4dc83e1ad7f059aeb41d6e401ebd677b56af676a;p=quassel.git diff --git a/src/qtui/settingspages/networkssettingspage.cpp b/src/qtui/settingspages/networkssettingspage.cpp index 7c98306f..c45c9729 100644 --- a/src/qtui/settingspages/networkssettingspage.cpp +++ b/src/qtui/settingspages/networkssettingspage.cpp @@ -28,9 +28,13 @@ #include "iconloader.h" #include "identity.h" #include "network.h" +#include "settingspagedlg.h" #include "util.h" -NetworksSettingsPage::NetworksSettingsPage(QWidget *parent) : SettingsPage(tr("General"), tr("Networks"), parent) { +#include "settingspages/identitiessettingspage.h" + +NetworksSettingsPage::NetworksSettingsPage(QWidget *parent) +: SettingsPage(tr("Misc"), tr("Networks"), parent) { ui.setupUi(this); // set up icons @@ -277,22 +281,17 @@ void NetworksSettingsPage::clientIdentityAdded(IdentityId id) { const Identity * identity = Client::identity(id); connect(identity, SIGNAL(updatedRemotely()), this, SLOT(clientIdentityUpdated())); - if(id == 1) { - // default identity is always the first one! - ui.identityList->insertItem(0, identity->identityName(), id.toInt()); - } else { - QString name = identity->identityName(); - for(int j = 0; j < ui.identityList->count(); j++) { - if((j>0 || ui.identityList->itemData(0).toInt() != 1) && name.localeAwareCompare(ui.identityList->itemText(j)) < 0) { - ui.identityList->insertItem(j, name, id.toInt()); - widgetHasChanged(); - return; - } + QString name = identity->identityName(); + for(int j = 0; j < ui.identityList->count(); j++) { + if((j>0 || ui.identityList->itemData(0).toInt() != 1) && name.localeAwareCompare(ui.identityList->itemText(j)) < 0) { + ui.identityList->insertItem(j, name, id.toInt()); + widgetHasChanged(); + return; } - // append - ui.identityList->insertItem(ui.identityList->count(), name, id.toInt()); - widgetHasChanged(); } + // append + ui.identityList->insertItem(ui.identityList->count(), name, id.toInt()); + widgetHasChanged(); } void NetworksSettingsPage::clientIdentityUpdated() { @@ -312,13 +311,13 @@ void NetworksSettingsPage::clientIdentityUpdated() { } void NetworksSettingsPage::clientIdentityRemoved(IdentityId id) { + IdentityId defaultId = defaultIdentity(); if(currentId != 0) saveToNetworkInfo(networkInfos[currentId]); - //ui.identityList->removeItem(ui.identityList->findData(id.toInt())); foreach(NetworkInfo info, networkInfos.values()) { - //qDebug() << info.networkName << info.networkId << info.identity; if(info.identity == id) { - if(info.networkId == currentId) ui.identityList->setCurrentIndex(0); - info.identity = 1; // set to default + if(info.networkId == currentId) + ui.identityList->setCurrentIndex(0); + info.identity = defaultId; networkInfos[info.networkId] = info; if(info.networkId > 0) Client::updateNetwork(info); } @@ -434,7 +433,10 @@ void NetworksSettingsPage::displayNetwork(NetworkId id) { ui.identityList->setCurrentIndex(ui.identityList->findData(info.identity.toInt())); ui.serverList->clear(); foreach(Network::Server server, info.serverList) { - ui.serverList->addItem(QString("%1:%2").arg(server.host).arg(server.port)); + QListWidgetItem *item = new QListWidgetItem(QString("%1:%2").arg(server.host).arg(server.port)); + if(server.useSsl) + item->setIcon(SmallIcon("document-encrypt")); + ui.serverList->addItem(item); } //setItemState(id); //ui.randomServer->setChecked(info.useRandomServer); @@ -515,29 +517,18 @@ void NetworksSettingsPage::on_addNetwork_clicked() { for(int i = 0; i < ui.networkList->count(); i++) existing << ui.networkList->item(i)->text(); NetworkAddDlg dlg(existing, this); if(dlg.exec() == QDialog::Accepted) { + NetworkInfo info = dlg.networkInfo(); + if(info.networkName.isEmpty()) + return; // sanity check + NetworkId id; for(id = 1; id <= networkInfos.count(); id++) { widgetHasChanged(); if(!networkInfos.keys().contains(-id.toInt())) break; } id = -id.toInt(); - - NetworkInfo info = dlg.networkInfo(); - if(info.networkName.isEmpty()) - return; // sanity check info.networkId = id; - 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; - + info.identity = defaultIdentity(); networkInfos[id] = info; QListWidgetItem *item = insertNetwork(info); ui.networkList->setCurrentItem(item); @@ -643,6 +634,21 @@ void NetworksSettingsPage::on_downServer_clicked() { widgetHasChanged(); } +void NetworksSettingsPage::on_editIdentities_clicked() { + SettingsPageDlg dlg(new IdentitiesSettingsPage(this), this); + dlg.exec(); +} + +IdentityId NetworksSettingsPage::defaultIdentity() const { + IdentityId defaultId = 0; + QList ids = Client::identityIds(); + foreach(IdentityId id, ids) { + if(defaultId == 0 || id < defaultId) + defaultId = id; + } + return defaultId; +} + /************************************************************************** * NetworkAddDlg *************************************************************************/ @@ -652,17 +658,12 @@ NetworkAddDlg::NetworkAddDlg(const QStringList &exist, QWidget *parent) : QDialo ui.useSSL->setIcon(SmallIcon("document-encrypt")); // read preset networks - networksFilePath = findDataFilePath("networks.ini"); - if(!networksFilePath.isEmpty()) { - QSettings s(networksFilePath, QSettings::IniFormat); - QStringList networks = s.childGroups(); - foreach(QString s, existing) - networks.removeAll(s); - if(!networks.isEmpty()) - networks.sort(); - ui.presetList->addItems(networks); - } - if(!ui.presetList->count()) { + QStringList networks = Network::presetNetworks(); + foreach(QString s, existing) + networks.removeAll(s); + if(networks.count()) + ui.presetList->addItems(networks); + else { ui.useManual->setChecked(true); ui.usePreset->setEnabled(false); } @@ -672,34 +673,13 @@ NetworkAddDlg::NetworkAddDlg(const QStringList &exist, QWidget *parent) : QDialo } NetworkInfo NetworkAddDlg::networkInfo() const { - NetworkInfo info; - if(ui.useManual->isChecked()) { + NetworkInfo info; info.networkName = ui.networkName->text().trimmed(); info.serverList << Network::Server(ui.serverAddress->text().trimmed(), ui.port->value(), ui.serverPassword->text(), ui.useSSL->isChecked()); - } else { - info.networkName = ui.presetList->currentText(); - QSettings s(networksFilePath, QSettings::IniFormat); - s.beginGroup(info.networkName); - foreach(QString server, s.value("Servers").toStringList()) { - bool ssl = false; - QStringList splitserver = server.split(':', QString::SkipEmptyParts); - if(splitserver.count() != 2) { - qWarning() << "Invalid server entry in networks.conf:" << server; - continue; - } - if(splitserver[1].at(0) == '+') - ssl = true; - uint port = splitserver[1].toUInt(); - if(!port) { - qWarning() << "Invalid port entry in networks.conf:" << server; - continue; - } - info.serverList << Network::Server(splitserver[0].trimmed(), port, QString(), ssl); - } - } - - return info; + return info; + } else + return Network::networkInfoFromPreset(ui.presetList->currentText()); } void NetworkAddDlg::setButtonStates() {