X-Git-Url: https://git.quassel-irc.org/?p=quassel.git;a=blobdiff_plain;f=src%2Fqtui%2Fsettingspages%2Fnetworkssettingspage.cpp;h=c9ba18a84b405914adb499c9ce9b9130a1ef56c8;hp=3aeaf7087926576d7a9cbf1206465a6fcad87e78;hb=e50ae7a06fc4e5d3a911c361d30953410deab609;hpb=5b686746c880e5cda6d5de3e08180ea4332ff222 diff --git a/src/qtui/settingspages/networkssettingspage.cpp b/src/qtui/settingspages/networkssettingspage.cpp index 3aeaf708..c9ba18a8 100644 --- a/src/qtui/settingspages/networkssettingspage.cpp +++ b/src/qtui/settingspages/networkssettingspage.cpp @@ -1,5 +1,5 @@ /*************************************************************************** - * Copyright (C) 2005-2012 by the Quassel Project * + * Copyright (C) 2005-2015 by the Quassel Project * * devel@quassel-irc.org * * * * This program is free software; you can redistribute it and/or modify * @@ -19,15 +19,16 @@ ***************************************************************************/ #include +#include #include #include #include "networkssettingspage.h" #include "client.h" -#include "iconloader.h" #include "identity.h" #include "network.h" +#include "presetnetworks.h" #include "settingspagedlg.h" #include "util.h" @@ -35,29 +36,37 @@ NetworksSettingsPage::NetworksSettingsPage(QWidget *parent) : SettingsPage(tr("IRC"), tr("Networks"), parent) +#ifdef HAVE_SSL + , _cid(0) +#endif { ui.setupUi(this); // hide SASL options for older cores if (!(Client::coreFeatures() & Quassel::SaslAuthentication)) ui.sasl->hide(); + if (!(Client::coreFeatures() & Quassel::SaslExternal)) + ui.saslExtInfo->hide(); +#ifndef HAVE_SSL + ui.saslExtInfo->hide(); +#endif // set up icons - ui.renameNetwork->setIcon(SmallIcon("edit-rename")); - ui.addNetwork->setIcon(SmallIcon("list-add")); - ui.deleteNetwork->setIcon(SmallIcon("edit-delete")); - ui.addServer->setIcon(SmallIcon("list-add")); - ui.deleteServer->setIcon(SmallIcon("edit-delete")); - ui.editServer->setIcon(SmallIcon("configure")); - ui.upServer->setIcon(SmallIcon("go-up")); - ui.downServer->setIcon(SmallIcon("go-down")); - ui.editIdentities->setIcon(SmallIcon("configure")); + ui.renameNetwork->setIcon(QIcon::fromTheme("edit-rename")); + ui.addNetwork->setIcon(QIcon::fromTheme("list-add")); + ui.deleteNetwork->setIcon(QIcon::fromTheme("edit-delete")); + ui.addServer->setIcon(QIcon::fromTheme("list-add")); + ui.deleteServer->setIcon(QIcon::fromTheme("edit-delete")); + ui.editServer->setIcon(QIcon::fromTheme("configure")); + ui.upServer->setIcon(QIcon::fromTheme("go-up")); + ui.downServer->setIcon(QIcon::fromTheme("go-down")); + ui.editIdentities->setIcon(QIcon::fromTheme("configure")); _ignoreWidgetChanges = false; - connectedIcon = SmallIcon("network-connect"); - connectingIcon = SmallIcon("network-wired"); // FIXME network-connecting - disconnectedIcon = SmallIcon("network-disconnect"); + connectedIcon = QIcon::fromTheme("network-connect"); + connectingIcon = QIcon::fromTheme("network-wired"); // FIXME network-connecting + disconnectedIcon = QIcon::fromTheme("network-disconnect"); foreach(int mib, QTextCodec::availableMibs()) { QByteArray codec = QTextCodec::codecForMib(mib)->name(); @@ -469,12 +478,26 @@ void NetworksSettingsPage::displayNetwork(NetworkId id) _ignoreWidgetChanges = true; if (id != 0) { NetworkInfo info = networkInfos[id]; + +#ifdef HAVE_SSL + // this is only needed when the core supports SASL EXTERNAL + if (Client::coreFeatures() & Quassel::SaslExternal) { + if (_cid) { + disconnect(_cid, SIGNAL(sslSettingsUpdated()), this, SLOT(sslUpdated())); + delete _cid; + } + _cid = new CertIdentity(*Client::identity(info.identity), this); + _cid->enableEditSsl(true); + connect(_cid, SIGNAL(sslSettingsUpdated()), this, SLOT(sslUpdated())); + } +#endif + ui.identityList->setCurrentIndex(ui.identityList->findData(info.identity.toInt())); ui.serverList->clear(); foreach(Network::Server server, info.serverList) { QListWidgetItem *item = new QListWidgetItem(QString("%1:%2").arg(server.host).arg(server.port)); if (server.useSsl) - item->setIcon(SmallIcon("document-encrypt")); + item->setIcon(QIcon::fromTheme("document-encrypt")); ui.serverList->addItem(item); } //setItemState(id); @@ -506,6 +529,12 @@ void NetworksSettingsPage::displayNetwork(NetworkId id) } else { // just clear widgets +#ifdef HAVE_SSL + if (_cid) { + disconnect(_cid, SIGNAL(sslSettingsUpdated()), this, SLOT(sslUpdated())); + delete _cid; + } +#endif ui.identityList->setCurrentIndex(-1); ui.serverList->clear(); ui.performEdit->clear(); @@ -549,6 +578,26 @@ void NetworksSettingsPage::saveToNetworkInfo(NetworkInfo &info) } +#ifdef HAVE_SSL +void NetworksSettingsPage::sslUpdated() +{ + if (_cid && !_cid->sslKey().isNull()) { + ui.saslAccount->setDisabled(true); + ui.saslAccountLabel->setDisabled(true); + ui.saslPassword->setDisabled(true); + ui.saslPasswordLabel->setDisabled(true); + ui.saslExtInfo->setHidden(false); + } else { + ui.saslAccount->setDisabled(false); + ui.saslAccountLabel->setDisabled(false); + ui.saslPassword->setDisabled(false); + ui.saslPasswordLabel->setDisabled(false); + ui.saslExtInfo->setHidden(true); + } +} +#endif + + /*** Network list ***/ void NetworksSettingsPage::on_networkList_itemSelectionChanged() @@ -735,10 +784,10 @@ IdentityId NetworksSettingsPage::defaultIdentity() const NetworkAddDlg::NetworkAddDlg(const QStringList &exist, QWidget *parent) : QDialog(parent), existing(exist) { ui.setupUi(this); - ui.useSSL->setIcon(SmallIcon("document-encrypt")); + ui.useSSL->setIcon(QIcon::fromTheme("document-encrypt")); // read preset networks - QStringList networks = Network::presetNetworks(); + QStringList networks = PresetNetworks::names(); foreach(QString s, existing) networks.removeAll(s); if (networks.count()) @@ -762,7 +811,7 @@ NetworkInfo NetworkAddDlg::networkInfo() const return info; } else - return Network::networkInfoFromPreset(ui.presetList->currentText()); + return PresetNetworks::networkInfo(ui.presetList->currentText()); } @@ -814,12 +863,11 @@ void NetworkEditDlg::on_networkEdit_textChanged(const QString &text) ServerEditDlg::ServerEditDlg(const Network::Server &server, QWidget *parent) : QDialog(parent) { ui.setupUi(this); - ui.useSSL->setIcon(SmallIcon("document-encrypt")); + ui.useSSL->setIcon(QIcon::fromTheme("document-encrypt")); ui.host->setText(server.host); ui.port->setValue(server.port); ui.password->setText(server.password); ui.useSSL->setChecked(server.useSsl); - ui.sslVersion->setCurrentIndex(server.sslVersion); ui.useProxy->setChecked(server.useProxy); ui.proxyType->setCurrentIndex(server.proxyType == QNetworkProxy::Socks5Proxy ? 0 : 1); ui.proxyHost->setText(server.proxyHost); @@ -833,7 +881,6 @@ ServerEditDlg::ServerEditDlg(const Network::Server &server, QWidget *parent) : Q Network::Server ServerEditDlg::serverData() const { Network::Server server(ui.host->text().trimmed(), ui.port->value(), ui.password->text(), ui.useSSL->isChecked()); - server.sslVersion = ui.sslVersion->currentIndex(); server.useProxy = ui.useProxy->isChecked(); server.proxyType = ui.proxyType->currentIndex() == 0 ? QNetworkProxy::Socks5Proxy : QNetworkProxy::HttpProxy; server.proxyHost = ui.proxyHost->text();