Add proxy handling
This commit is contained in:
parent
aee289eaef
commit
546f4782d1
@ -12,6 +12,7 @@
|
|||||||
#include <QApplication>
|
#include <QApplication>
|
||||||
#include <QClipboard>
|
#include <QClipboard>
|
||||||
#include <QMessageBox>
|
#include <QMessageBox>
|
||||||
|
#include <QNetworkProxy>
|
||||||
|
|
||||||
Manager::Manager()
|
Manager::Manager()
|
||||||
{
|
{
|
||||||
@ -34,6 +35,8 @@ Manager::~Manager() = default;
|
|||||||
void Manager::updateSettings(const Settings &settings)
|
void Manager::updateSettings(const Settings &settings)
|
||||||
{
|
{
|
||||||
LTRACE() << "updateSettings";
|
LTRACE() << "updateSettings";
|
||||||
|
setupProxy(settings);
|
||||||
|
|
||||||
tray_->updateSettings(settings);
|
tray_->updateSettings(settings);
|
||||||
capturer_->updateSettings(settings);
|
capturer_->updateSettings(settings);
|
||||||
recognizer_->updateSettings(settings);
|
recognizer_->updateSettings(settings);
|
||||||
@ -42,6 +45,31 @@ void Manager::updateSettings(const Settings &settings)
|
|||||||
representer_->updateSettings(settings);
|
representer_->updateSettings(settings);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void Manager::setupProxy(const Settings &settings)
|
||||||
|
{
|
||||||
|
if (settings.proxyType == ProxyType::System) {
|
||||||
|
QNetworkProxyFactory::setUseSystemConfiguration(true);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
QNetworkProxyFactory::setUseSystemConfiguration(false);
|
||||||
|
|
||||||
|
if (settings.proxyType == ProxyType::Disabled) {
|
||||||
|
QNetworkProxy::setApplicationProxy({});
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
QNetworkProxy proxy;
|
||||||
|
using T = QNetworkProxy::ProxyType;
|
||||||
|
proxy.setType(settings.proxyType == ProxyType::Socks5 ? T::Socks5Proxy
|
||||||
|
: T::HttpProxy);
|
||||||
|
proxy.setHostName(settings.proxyHostName);
|
||||||
|
proxy.setPort(settings.proxyPort);
|
||||||
|
proxy.setUser(settings.proxyUser);
|
||||||
|
proxy.setPassword(settings.proxyPassword);
|
||||||
|
QNetworkProxy::setApplicationProxy(proxy);
|
||||||
|
}
|
||||||
|
|
||||||
void Manager::finishTask(const TaskPtr &task)
|
void Manager::finishTask(const TaskPtr &task)
|
||||||
{
|
{
|
||||||
SOFT_ASSERT(task, return );
|
SOFT_ASSERT(task, return );
|
||||||
|
@ -27,6 +27,7 @@ public:
|
|||||||
|
|
||||||
private:
|
private:
|
||||||
void updateSettings(const Settings &settings);
|
void updateSettings(const Settings &settings);
|
||||||
|
void setupProxy(const Settings &settings);
|
||||||
void finishTask(const TaskPtr &task);
|
void finishTask(const TaskPtr &task);
|
||||||
|
|
||||||
std::unique_ptr<TrayIcon> tray_;
|
std::unique_ptr<TrayIcon> tray_;
|
||||||
|
@ -62,7 +62,7 @@ void Settings::save()
|
|||||||
|
|
||||||
settings.setValue(qs_resultShowType, int(resultShowType));
|
settings.setValue(qs_resultShowType, int(resultShowType));
|
||||||
|
|
||||||
settings.setValue(qs_proxyType, proxyType);
|
settings.setValue(qs_proxyType, int(proxyType));
|
||||||
settings.setValue(qs_proxyHostName, proxyHostName);
|
settings.setValue(qs_proxyHostName, proxyHostName);
|
||||||
settings.setValue(qs_proxyPort, proxyPort);
|
settings.setValue(qs_proxyPort, proxyPort);
|
||||||
settings.setValue(qs_proxyUser, proxyUser);
|
settings.setValue(qs_proxyUser, proxyUser);
|
||||||
@ -115,7 +115,9 @@ void Settings::load()
|
|||||||
std::clamp(settings.value(qs_resultShowType, int(resultShowType)).toInt(),
|
std::clamp(settings.value(qs_resultShowType, int(resultShowType)).toInt(),
|
||||||
int(ResultMode::Widget), int(ResultMode::Tooltip)));
|
int(ResultMode::Widget), int(ResultMode::Tooltip)));
|
||||||
|
|
||||||
proxyType = settings.value(qs_proxyType, proxyType).toInt();
|
proxyType =
|
||||||
|
ProxyType(std::clamp(settings.value(qs_proxyType, int(proxyType)).toInt(),
|
||||||
|
int(ProxyType::Disabled), int(ProxyType::Http)));
|
||||||
proxyHostName = settings.value(qs_proxyHostName, proxyHostName).toString();
|
proxyHostName = settings.value(qs_proxyHostName, proxyHostName).toString();
|
||||||
proxyPort = settings.value(qs_proxyPort, proxyPort).toInt();
|
proxyPort = settings.value(qs_proxyPort, proxyPort).toInt();
|
||||||
proxyUser = settings.value(qs_proxyUser, proxyUser).toString();
|
proxyUser = settings.value(qs_proxyUser, proxyUser).toString();
|
||||||
|
@ -14,6 +14,8 @@ struct Substitution {
|
|||||||
};
|
};
|
||||||
using Substitutions = std::unordered_multimap<LanguageId, Substitution>;
|
using Substitutions = std::unordered_multimap<LanguageId, Substitution>;
|
||||||
|
|
||||||
|
enum class ProxyType { Disabled, System, Socks5, Http };
|
||||||
|
|
||||||
class Settings
|
class Settings
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
@ -25,11 +27,11 @@ public:
|
|||||||
QString showLastHotkey{"Ctrl+Alt+X"};
|
QString showLastHotkey{"Ctrl+Alt+X"};
|
||||||
QString clipboardHotkey{"Ctrl+Alt+C"};
|
QString clipboardHotkey{"Ctrl+Alt+C"};
|
||||||
|
|
||||||
int proxyType{0};
|
ProxyType proxyType{ProxyType::System};
|
||||||
QString proxyHostName{""};
|
QString proxyHostName;
|
||||||
int proxyPort{8080};
|
int proxyPort{8080};
|
||||||
QString proxyUser{""};
|
QString proxyUser;
|
||||||
QString proxyPassword{""};
|
QString proxyPassword;
|
||||||
bool proxySavePassword{false};
|
bool proxySavePassword{false};
|
||||||
|
|
||||||
int autoUpdateType{0}; // Never
|
int autoUpdateType{0}; // Never
|
||||||
|
@ -23,23 +23,21 @@ SettingsEditor::SettingsEditor()
|
|||||||
this, &SettingsEditor::updateCurrentPage);
|
this, &SettingsEditor::updateCurrentPage);
|
||||||
}
|
}
|
||||||
|
|
||||||
// general
|
{
|
||||||
// QMap<QNetworkProxy::ProxyType, QString> proxyTypeNames;
|
QMap<ProxyType, QString> proxyTypes;
|
||||||
// proxyTypeNames.insert(QNetworkProxy::NoProxy, tr("No"));
|
proxyTypes.insert(ProxyType::Disabled, tr("Disabled"));
|
||||||
// proxyTypeNames.insert(QNetworkProxy::DefaultProxy, tr("System"));
|
proxyTypes.insert(ProxyType::System, tr("System"));
|
||||||
// proxyTypeNames.insert(QNetworkProxy::Socks5Proxy, tr("SOCKS 5"));
|
proxyTypes.insert(ProxyType::Socks5, tr("SOCKS 5"));
|
||||||
// proxyTypeNames.insert(QNetworkProxy::HttpProxy, tr("HTTP"));
|
proxyTypes.insert(ProxyType::Http, tr("HTTP"));
|
||||||
// QList<int> proxyOrder = proxyTypeOrder();
|
ui->proxyTypeCombo->addItems(proxyTypes.values());
|
||||||
// for (int type : proxyOrder) {
|
|
||||||
// ui->proxyTypeCombo->addItem(
|
|
||||||
// proxyTypeNames.value(QNetworkProxy::ProxyType(type)));
|
|
||||||
// }
|
|
||||||
|
|
||||||
// QRegExp urlRegexp(
|
QRegExp urlRegexp(
|
||||||
// R"(^(https?:\/\/)?([\da-z\.-]+)\.([a-z\.]{2,6})([\/\w \.-]*)*\/?$)");
|
R"(^(https?:\/\/)?([\da-z\.-]+)\.([a-z\.]{2,6})([\/\w \.-]*)*\/?$)");
|
||||||
// ui->proxyHostEdit->setValidator(
|
ui->proxyHostEdit->setValidator(
|
||||||
// new QRegExpValidator(urlRegexp, ui->proxyHostEdit));
|
new QRegExpValidator(urlRegexp, ui->proxyHostEdit));
|
||||||
// ui->proxyPassEdit->setEchoMode(QLineEdit::PasswordEchoOnEdit);
|
|
||||||
|
ui->proxyPassEdit->setEchoMode(QLineEdit::PasswordEchoOnEdit);
|
||||||
|
}
|
||||||
|
|
||||||
// recognition
|
// recognition
|
||||||
connect(ui->tessdataButton, &QPushButton::clicked, //
|
connect(ui->tessdataButton, &QPushButton::clicked, //
|
||||||
@ -77,6 +75,13 @@ Settings SettingsEditor::settings() const
|
|||||||
settings.showLastHotkey = ui->repeatEdit->keySequence().toString();
|
settings.showLastHotkey = ui->repeatEdit->keySequence().toString();
|
||||||
settings.clipboardHotkey = ui->clipboardEdit->keySequence().toString();
|
settings.clipboardHotkey = ui->clipboardEdit->keySequence().toString();
|
||||||
|
|
||||||
|
settings.proxyType = ProxyType(ui->proxyTypeCombo->currentIndex());
|
||||||
|
settings.proxyHostName = ui->proxyHostEdit->text();
|
||||||
|
settings.proxyPort = ui->proxyPortSpin->value();
|
||||||
|
settings.proxyUser = ui->proxyUserEdit->text();
|
||||||
|
settings.proxyPassword = ui->proxyPassEdit->text();
|
||||||
|
settings.proxySavePassword = ui->proxySaveCheck->isChecked();
|
||||||
|
|
||||||
settings.tessdataPath = ui->tessdataEdit->text();
|
settings.tessdataPath = ui->tessdataEdit->text();
|
||||||
|
|
||||||
settings.doTranslation = ui->doTranslationCheck->isChecked();
|
settings.doTranslation = ui->doTranslationCheck->isChecked();
|
||||||
@ -104,6 +109,13 @@ void SettingsEditor::setSettings(const Settings &settings)
|
|||||||
ui->repeatEdit->setKeySequence(settings.showLastHotkey);
|
ui->repeatEdit->setKeySequence(settings.showLastHotkey);
|
||||||
ui->clipboardEdit->setKeySequence(settings.clipboardHotkey);
|
ui->clipboardEdit->setKeySequence(settings.clipboardHotkey);
|
||||||
|
|
||||||
|
ui->proxyTypeCombo->setCurrentIndex(int(settings.proxyType));
|
||||||
|
ui->proxyHostEdit->setText(settings.proxyHostName);
|
||||||
|
ui->proxyPortSpin->setValue(settings.proxyPort);
|
||||||
|
ui->proxyUserEdit->setText(settings.proxyUser);
|
||||||
|
ui->proxyPassEdit->setText(settings.proxyPassword);
|
||||||
|
ui->proxySaveCheck->setChecked(settings.proxySavePassword);
|
||||||
|
|
||||||
ui->tessdataEdit->setText(settings.tessdataPath);
|
ui->tessdataEdit->setText(settings.tessdataPath);
|
||||||
updateTesseractLanguages();
|
updateTesseractLanguages();
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user