diff options
author | Christian Kamm <mail@ckamm.de> | 2017-11-05 21:50:09 +0300 |
---|---|---|
committer | Christian Kamm <mail@ckamm.de> | 2018-01-04 16:30:24 +0300 |
commit | ab9d6285c6b2aa118c39006d8d1b5c091b848a1a (patch) | |
tree | 04273e8cf137a2a17053e0f60a01ab4f4f868542 /src/gui/networksettings.cpp | |
parent | 6e445033c7dba3642bc190f6f26da48b7462beb3 (diff) |
Proxy: Hostname validation and reconnection on setting change
Where 'validation' currently just means "check whether it's empty".
Code adapted from wiggiBe's original PR #6140
Diffstat (limited to 'src/gui/networksettings.cpp')
-rw-r--r-- | src/gui/networksettings.cpp | 21 |
1 files changed, 21 insertions, 0 deletions
diff --git a/src/gui/networksettings.cpp b/src/gui/networksettings.cpp index a981d80c5..018384f1a 100644 --- a/src/gui/networksettings.cpp +++ b/src/gui/networksettings.cpp @@ -20,8 +20,11 @@ #include "application.h" #include "configfile.h" #include "folderman.h" +#include "accountmanager.h" #include <QNetworkProxy> +#include <QString> +#include <QList> namespace OCC { @@ -73,6 +76,10 @@ NetworkSettings::NetworkSettings(QWidget *parent) connect(_ui->autoDownloadLimitRadioButton, &QAbstractButton::clicked, this, &NetworkSettings::saveBWLimitSettings); connect(_ui->downloadSpinBox, static_cast<void (QSpinBox::*)(int)>(&QSpinBox::valueChanged), this, &NetworkSettings::saveBWLimitSettings); connect(_ui->uploadSpinBox, static_cast<void (QSpinBox::*)(int)>(&QSpinBox::valueChanged), this, &NetworkSettings::saveBWLimitSettings); + + // Warn about empty proxy host + connect(_ui->hostLineEdit, &QLineEdit::textChanged, this, &NetworkSettings::checkEmptyProxyHost); + checkEmptyProxyHost(); } NetworkSettings::~NetworkSettings() @@ -150,6 +157,7 @@ void NetworkSettings::saveProxySettings() { ConfigFile cfgFile; + checkEmptyProxyHost(); if (_ui->noProxyRadioButton->isChecked()) { cfgFile.setProxyType(QNetworkProxy::NoProxy); } else if (_ui->systemProxyRadioButton->isChecked()) { @@ -170,6 +178,10 @@ void NetworkSettings::saveProxySettings() // ...and set the folders dirty, they refresh their proxy next time they // start the sync. FolderMan::instance()->setDirtyProxy(true); + + for (auto account : AccountManager::instance()->accounts()) { + account->freshConnectionAttempt(); + } } void NetworkSettings::saveBWLimitSettings() @@ -196,4 +208,13 @@ void NetworkSettings::saveBWLimitSettings() FolderMan::instance()->setDirtyNetworkLimits(); } +void NetworkSettings::checkEmptyProxyHost() +{ + if (_ui->hostLineEdit->isEnabled() && _ui->hostLineEdit->text().isEmpty()) { + _ui->hostLineEdit->setStyleSheet("border: 1px solid red"); + } else { + _ui->hostLineEdit->setStyleSheet(QString()); + } +} + } // namespace OCC |