diff --git a/src/gui/formsettings.cpp b/src/gui/formsettings.cpp index fd4269bab..794fdf0ff 100644 --- a/src/gui/formsettings.cpp +++ b/src/gui/formsettings.cpp @@ -1,5 +1,6 @@ #include #include +#include #include "gui/formsettings.h" #include "gui/themefactory.h" @@ -36,11 +37,14 @@ FormSettings::FormSettings(QWidget *parent) : QDialog(parent), m_ui(new Ui::Form // Establish needed connections. connect(this, &FormSettings::accepted, this, &FormSettings::saveSettings); + connect(m_ui->m_cmbProxyType, static_cast(&QComboBox::currentIndexChanged), + this, &FormSettings::onProxyTypeChanged); // Load all settings. loadGeneral(); loadShortcuts(); loadInterface(); + loadProxy(); loadLanguage(); } @@ -53,11 +57,38 @@ void FormSettings::saveSettings() { saveGeneral(); saveShortcuts(); saveInterface(); + saveProxy(); saveLanguage(); Settings::getInstance()->checkSettings(); } +void FormSettings::onProxyTypeChanged(int index) { + QNetworkProxy::ProxyType selected_type = static_cast(m_ui->m_cmbProxyType->itemData(index).toInt()); + bool is_proxy_selected = selected_type != QNetworkProxy::NoProxy; + + m_ui->m_txtProxyHost->setVisible(is_proxy_selected); + m_ui->m_txtProxyPassword->setVisible(is_proxy_selected); + m_ui->m_txtProxyUsername->setVisible(is_proxy_selected); + m_ui->m_spinProxyPort->setVisible(is_proxy_selected); + m_ui->m_lblProxyHost->setVisible(is_proxy_selected); + m_ui->m_lblProxyInfo->setVisible(is_proxy_selected); + m_ui->m_lblProxyPassword->setVisible(is_proxy_selected); + m_ui->m_lblProxyPort->setVisible(is_proxy_selected); + m_ui->m_lblProxyUsername->setVisible(is_proxy_selected); + m_ui->m_checkShowPassword->setVisible(is_proxy_selected); +} + +void FormSettings::loadProxy() { + m_ui->m_cmbProxyType->addItem(tr("No proxy"), QNetworkProxy::NoProxy); + m_ui->m_cmbProxyType->addItem(tr("Socks5"), QNetworkProxy::Socks5Proxy); + m_ui->m_cmbProxyType->addItem(tr("Http"), QNetworkProxy::HttpProxy); +} + +void FormSettings::saveProxy() { + +} + void FormSettings::loadLanguage() { QList languages = Localization::getInstalledLanguages(); diff --git a/src/gui/formsettings.h b/src/gui/formsettings.h index af114c05c..5d2c6fd33 100644 --- a/src/gui/formsettings.h +++ b/src/gui/formsettings.h @@ -33,6 +33,11 @@ class FormSettings : public QDialog { void loadShortcuts(); void saveShortcuts(); + + void loadProxy(); + void saveProxy(); + + void onProxyTypeChanged(int index); private: Ui::FormSettings *m_ui; diff --git a/src/gui/formsettings.ui b/src/gui/formsettings.ui index e5a793e2c..871ff599e 100644 --- a/src/gui/formsettings.ui +++ b/src/gui/formsettings.ui @@ -45,12 +45,27 @@ Language + + + Proxy + + + + + + + + Qt::Horizontal + + + QDialogButtonBox::Cancel|QDialogButtonBox::Ok + - 1 + 4 @@ -298,16 +313,145 @@ - - - - - - Qt::Horizontal - - - QDialogButtonBox::Cancel|QDialogButtonBox::Ok - + + + + 0 + + + 0 + + + 0 + + + 0 + + + + + Type + + + Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter + + + + + + + + + + Host + + + Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter + + + + + + + + + true + + + Hostname or IP of your proxy server + + + + + + + Port + + + Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter + + + + + + + true + + + 65535 + + + 80 + + + + + + + + + Username + + + Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter + + + + + + + true + + + Your username for proxy server authentication + + + + + + + Password + + + Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter + + + + + + + true + + + QLineEdit::Password + + + Your password for proxy server authentication + + + + + + + true + + + Display password + + + + + + + Password is stored in plain string in RSS Guard configuration file. + + + true + + + + +