X-Git-Url: https://git.quassel-irc.org/?p=quassel.git;a=blobdiff_plain;f=src%2Fqtui%2Fsettingspages%2Fcoreaccountsettingspage.cpp;h=dfb745612088ae002bdfafd209eff827e1b4e38f;hp=a4af64e9d517a9af6b858c0447351ff590c0cfc9;hb=8d736eb601e79e8fe1a866eb67e626b33f651d7a;hpb=f3d6f8088d8be6af9319a99fb8d2fee2837b540a diff --git a/src/qtui/settingspages/coreaccountsettingspage.cpp b/src/qtui/settingspages/coreaccountsettingspage.cpp index a4af64e9..dfb74561 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 * @@ -20,11 +20,10 @@ #include "coreaccountsettingspage.h" -#include - #include "client.h" #include "clientsettings.h" #include "coreaccountmodel.h" +#include "icon.h" CoreAccountSettingsPage::CoreAccountSettingsPage(QWidget *parent) : SettingsPage(tr("Remote Cores"), QString(), parent), @@ -34,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); @@ -82,6 +81,8 @@ void CoreAccountSettingsPage::load() ui.autoConnectAccount->setCurrentIndex(idx.isValid() ? idx.row() : 0); ui.autoConnectAccount->setProperty("storedValue", ui.autoConnectAccount->currentIndex()); setWidgetStates(); + // Mark as no changes made, we just loaded settings + setChangedState(false); } @@ -225,10 +226,13 @@ void CoreAccountSettingsPage::widgetHasChanged() bool CoreAccountSettingsPage::testHasChanged() { - if (ui.autoConnectAccount->currentIndex() != ui.autoConnectAccount->property("storedValue").toInt()) + if (ui.autoConnectAccount->currentIndex() != + ui.autoConnectAccount->property("storedValue").toInt()) { return true; - if (!(*model() == *Client::coreAccountModel())) + } + if (*model() != *Client::coreAccountModel()) { return true; + } return false; } @@ -250,12 +254,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")); @@ -272,12 +304,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; } @@ -311,6 +363,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