X-Git-Url: https://git.quassel-irc.org/?p=quassel.git;a=blobdiff_plain;f=src%2Fqtui%2Fsettingspages%2Fcoreaccountsettingspage.cpp;h=0ccf5ad445f0cca727e28b8b8bc464b204d1a6df;hp=9b667e0a3efa20ef855435185e802d13a3681271;hb=db6e6642a43143bc45ddb0732d144815b68e37f8;hpb=7de4debb5a6744d9f67cb09c5fc0aa136f05be96 diff --git a/src/qtui/settingspages/coreaccountsettingspage.cpp b/src/qtui/settingspages/coreaccountsettingspage.cpp index 9b667e0a..0ccf5ad4 100644 --- a/src/qtui/settingspages/coreaccountsettingspage.cpp +++ b/src/qtui/settingspages/coreaccountsettingspage.cpp @@ -1,5 +1,5 @@ /*************************************************************************** - * Copyright (C) 2005-2014 by the Quassel Project * + * Copyright (C) 2005-2018 by the Quassel Project * * devel@quassel-irc.org * * * * This program is free software; you can redistribute it and/or modify * @@ -23,7 +23,7 @@ #include "client.h" #include "clientsettings.h" #include "coreaccountmodel.h" -#include "iconloader.h" +#include "icon.h" CoreAccountSettingsPage::CoreAccountSettingsPage(QWidget *parent) : SettingsPage(tr("Remote Cores"), QString(), parent), @@ -33,9 +33,9 @@ CoreAccountSettingsPage::CoreAccountSettingsPage(QWidget *parent) { ui.setupUi(this); initAutoWidgets(); - ui.addAccountButton->setIcon(QIcon::fromTheme("list-add")); - ui.editAccountButton->setIcon(QIcon::fromTheme("document-edit")); - ui.deleteAccountButton->setIcon(QIcon::fromTheme("edit-delete")); + ui.addAccountButton->setIcon(icon::get("list-add")); + ui.editAccountButton->setIcon(icon::get("document-edit")); + ui.deleteAccountButton->setIcon(icon::get("edit-delete")); _model = new CoreAccountModel(Client::coreAccountModel(), this); _filteredModel = new FilteredCoreAccountModel(_model, this); @@ -226,8 +226,9 @@ bool CoreAccountSettingsPage::testHasChanged() { if (ui.autoConnectAccount->currentIndex() != ui.autoConnectAccount->property("storedValue").toInt()) return true; - if (!(*model() == *Client::coreAccountModel())) + if (*model() != *Client::coreAccountModel()) { return true; + } return false; } @@ -249,12 +250,40 @@ CoreAccountEditDlg::CoreAccountEditDlg(const CoreAccount &acct, QWidget *parent) ui.user->setText(acct.user()); ui.password->setText(acct.password()); ui.rememberPassword->setChecked(acct.storePassword()); - ui.useProxy->setChecked(acct.useProxy()); - ui.proxyHostName->setText(acct.proxyHostName()); - ui.proxyPort->setValue(acct.proxyPort()); - ui.proxyType->setCurrentIndex(acct.proxyType() == QNetworkProxy::Socks5Proxy ? 0 : 1); - ui.proxyUser->setText(acct.proxyUser()); - ui.proxyPassword->setText(acct.proxyPassword()); + + ui.buttonGroupProxyType->setId(ui.radioButtonNoProxy, 0); + ui.buttonGroupProxyType->setId(ui.radioButtonSystemProxy, 1); + ui.buttonGroupProxyType->setId(ui.radioButtonManualProxy, 2); + + bool manualProxy = false; + switch (acct.proxyType()) { + case QNetworkProxy::NoProxy: + ui.buttonGroupProxyType->button(0)->setChecked(true); + break; + case QNetworkProxy::DefaultProxy: + ui.buttonGroupProxyType->button(1)->setChecked(true); + break; + case QNetworkProxy::Socks5Proxy: + ui.buttonGroupProxyType->button(2)->setChecked(true); + ui.proxyType->setCurrentIndex(0); + manualProxy = true; + break; + case QNetworkProxy::HttpProxy: + ui.buttonGroupProxyType->button(2)->setChecked(true); + ui.proxyType->setCurrentIndex(1); + manualProxy = true; + break; + default: + break; + } + + if (manualProxy) { + ui.proxyHostName->setText(acct.proxyHostName()); + ui.proxyPort->setValue(acct.proxyPort()); + ui.proxyType->setEnabled(true); + ui.proxyUser->setText(acct.proxyUser()); + ui.proxyPassword->setText(acct.proxyPassword()); + } if (acct.accountId().isValid()) setWindowTitle(tr("Edit Core Account")); @@ -271,12 +300,32 @@ CoreAccount CoreAccountEditDlg::account() _account.setUser(ui.user->text().trimmed()); _account.setPassword(ui.password->text()); _account.setStorePassword(ui.rememberPassword->isChecked()); - _account.setUseProxy(ui.useProxy->isChecked()); - _account.setProxyHostName(ui.proxyHostName->text().trimmed()); - _account.setProxyPort(ui.proxyPort->value()); - _account.setProxyType(ui.proxyType->currentIndex() == 0 ? QNetworkProxy::Socks5Proxy : QNetworkProxy::HttpProxy); - _account.setProxyUser(ui.proxyUser->text().trimmed()); - _account.setProxyPassword(ui.proxyPassword->text()); + + QNetworkProxy::ProxyType proxyType = QNetworkProxy::NoProxy; + int checkedId = ui.buttonGroupProxyType->checkedId(); + + switch (checkedId) { + case NoProxy: // QNetworkProxy::NoProxy + QNetworkProxyFactory::setUseSystemConfiguration(false); + _account.setProxyType(proxyType); + break; + case SystemProxy: // QNetworkProxy::DefaultProxy: + QNetworkProxyFactory::setUseSystemConfiguration(true); + _account.setProxyType(QNetworkProxy::DefaultProxy); + break; + case ManualProxy: // QNetworkProxy::Socks5Proxy || QNetworkProxy::HttpProxy + proxyType = ui.proxyType->currentIndex() == 0 ? + QNetworkProxy::Socks5Proxy : QNetworkProxy::HttpProxy; + QNetworkProxyFactory::setUseSystemConfiguration(false); + _account.setProxyHostName(ui.proxyHostName->text().trimmed()); + _account.setProxyPort(ui.proxyPort->value()); + _account.setProxyType(proxyType); + _account.setProxyUser(ui.proxyUser->text().trimmed()); + _account.setProxyPassword(ui.proxyPassword->text()); + break; + default: + break; + } return _account; } @@ -310,6 +359,15 @@ void CoreAccountEditDlg::on_user_textChanged(const QString &text) setWidgetStates(); } +void CoreAccountEditDlg::on_radioButtonManualProxy_toggled(bool checked) +{ + ui.proxyType->setEnabled(checked); + ui.proxyHostName->setEnabled(checked); + ui.proxyPort->setEnabled(checked); + ui.proxyUser->setEnabled(checked); + ui.proxyPassword->setEnabled(checked); +} + /***************************************************************************************** * FilteredCoreAccountModel