Added ability to set proxy.
This commit is contained in:
parent
0fd694787a
commit
b6461fa3a9
12
Manager.cpp
12
Manager.cpp
@ -11,6 +11,7 @@
|
|||||||
#include <QClipboard>
|
#include <QClipboard>
|
||||||
#include <QMessageBox>
|
#include <QMessageBox>
|
||||||
#include <QInputDialog>
|
#include <QInputDialog>
|
||||||
|
#include <QNetworkProxy>
|
||||||
|
|
||||||
#include "Settings.h"
|
#include "Settings.h"
|
||||||
#include "SettingsEditor.h"
|
#include "SettingsEditor.h"
|
||||||
@ -21,6 +22,7 @@
|
|||||||
#include "ResultDialog.h"
|
#include "ResultDialog.h"
|
||||||
#include "LanguageHelper.h"
|
#include "LanguageHelper.h"
|
||||||
#include "StAssert.h"
|
#include "StAssert.h"
|
||||||
|
#include "Utils.h"
|
||||||
|
|
||||||
Manager::Manager (QObject *parent) :
|
Manager::Manager (QObject *parent) :
|
||||||
QObject (parent),
|
QObject (parent),
|
||||||
@ -155,6 +157,16 @@ void Manager::applySettings () {
|
|||||||
|
|
||||||
// Depends on SettingsEditor button indexes. 1==dialog
|
// Depends on SettingsEditor button indexes. 1==dialog
|
||||||
useResultDialog_ = GET (resultShowType).toBool ();
|
useResultDialog_ = GET (resultShowType).toBool ();
|
||||||
|
|
||||||
|
QNetworkProxy proxy = QNetworkProxy::applicationProxy ();
|
||||||
|
proxy.setType (QNetworkProxy::ProxyType (GET (proxyType).toInt ()));
|
||||||
|
proxy.setHostName (GET (proxyHostName).toString ());
|
||||||
|
proxy.setPort (GET (proxyPort).toInt ());
|
||||||
|
proxy.setUser (GET (proxyUser).toString ());
|
||||||
|
if (GET (proxySavePassword).toBool ()) {
|
||||||
|
proxy.setPassword (encode (GET (proxyPassword).toString ()));
|
||||||
|
}
|
||||||
|
QNetworkProxy::setApplicationProxy (proxy);
|
||||||
settings.endGroup ();
|
settings.endGroup ();
|
||||||
|
|
||||||
settings.beginGroup (settings_names::translationGroup);
|
settings.beginGroup (settings_names::translationGroup);
|
||||||
|
@ -40,7 +40,8 @@ SOURCES += main.cpp\
|
|||||||
WebTranslator.cpp \
|
WebTranslator.cpp \
|
||||||
WebTranslatorProxy.cpp \
|
WebTranslatorProxy.cpp \
|
||||||
TranslatorHelper.cpp \
|
TranslatorHelper.cpp \
|
||||||
RecognizerHelper.cpp
|
RecognizerHelper.cpp \
|
||||||
|
Utils.cpp
|
||||||
|
|
||||||
HEADERS += \
|
HEADERS += \
|
||||||
Manager.h \
|
Manager.h \
|
||||||
@ -57,7 +58,8 @@ HEADERS += \
|
|||||||
WebTranslatorProxy.h \
|
WebTranslatorProxy.h \
|
||||||
StAssert.h \
|
StAssert.h \
|
||||||
TranslatorHelper.h \
|
TranslatorHelper.h \
|
||||||
RecognizerHelper.h
|
RecognizerHelper.h \
|
||||||
|
Utils.h
|
||||||
|
|
||||||
FORMS += \
|
FORMS += \
|
||||||
SettingsEditor.ui \
|
SettingsEditor.ui \
|
||||||
|
13
Settings.h
13
Settings.h
@ -12,6 +12,12 @@ namespace settings_names {
|
|||||||
const QString repeatHotkey = "repeatHotkey";
|
const QString repeatHotkey = "repeatHotkey";
|
||||||
const QString clipboardHotkey = "clipboardHotkey";
|
const QString clipboardHotkey = "clipboardHotkey";
|
||||||
const QString resultShowType = "resultShowType";
|
const QString resultShowType = "resultShowType";
|
||||||
|
const QString proxyType = "proxyType";
|
||||||
|
const QString proxyHostName = "proxyHostName";
|
||||||
|
const QString proxyPort = "proxyPort";
|
||||||
|
const QString proxyUser = "proxyUser";
|
||||||
|
const QString proxyPassword = "proxyPassword";
|
||||||
|
const QString proxySavePassword = "proxySavePassword";
|
||||||
|
|
||||||
//! Recognition
|
//! Recognition
|
||||||
const QString recogntionGroup = "Recognition";
|
const QString recogntionGroup = "Recognition";
|
||||||
@ -27,7 +33,6 @@ namespace settings_names {
|
|||||||
const QString translationTimeout = "translation_timeout";
|
const QString translationTimeout = "translation_timeout";
|
||||||
const QString translationDebugMode = "translation_debug";
|
const QString translationDebugMode = "translation_debug";
|
||||||
const QString translators = "translators";
|
const QString translators = "translators";
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
namespace settings_values {
|
namespace settings_values {
|
||||||
@ -40,6 +45,12 @@ namespace settings_values {
|
|||||||
const QString repeatHotkey = "Ctrl+Alt+X";
|
const QString repeatHotkey = "Ctrl+Alt+X";
|
||||||
const QString clipboardHotkey = "Ctrl+Alt+C";
|
const QString clipboardHotkey = "Ctrl+Alt+C";
|
||||||
const QString resultShowType = "1";//dialog
|
const QString resultShowType = "1";//dialog
|
||||||
|
const int proxyType = 0;
|
||||||
|
const QString proxyHostName = "";
|
||||||
|
const int proxyPort = 8080;
|
||||||
|
const QString proxyUser = "";
|
||||||
|
const QString proxyPassword = "";
|
||||||
|
const bool proxySavePassword = false;
|
||||||
|
|
||||||
//! Recognition
|
//! Recognition
|
||||||
const QString tessDataPlace = "./";
|
const QString tessDataPlace = "./";
|
||||||
|
@ -4,10 +4,13 @@
|
|||||||
#include "TranslatorHelper.h"
|
#include "TranslatorHelper.h"
|
||||||
#include "RecognizerHelper.h"
|
#include "RecognizerHelper.h"
|
||||||
#include "StAssert.h"
|
#include "StAssert.h"
|
||||||
|
#include "Utils.h"
|
||||||
|
|
||||||
#include <QSettings>
|
#include <QSettings>
|
||||||
#include <QFileDialog>
|
#include <QFileDialog>
|
||||||
#include <QDir>
|
#include <QDir>
|
||||||
|
#include <QRegExpValidator>
|
||||||
|
#include <QNetworkProxy>
|
||||||
|
|
||||||
#include "Settings.h"
|
#include "Settings.h"
|
||||||
|
|
||||||
@ -29,6 +32,22 @@ SettingsEditor::SettingsEditor (const LanguageHelper &dictionary, QWidget *paren
|
|||||||
SLOT (recognizerFixTableItemChanged (QTableWidgetItem *)));
|
SLOT (recognizerFixTableItemChanged (QTableWidgetItem *)));
|
||||||
|
|
||||||
ui->translateLangCombo->addItems (dictionary_.translateLanguagesUi ());
|
ui->translateLangCombo->addItems (dictionary_.translateLanguagesUi ());
|
||||||
|
|
||||||
|
typedef QNetworkProxy::ProxyType ProxyType;
|
||||||
|
QMap<ProxyType, QString> proxyTypeNames;
|
||||||
|
proxyTypeNames.insert (QNetworkProxy::NoProxy, tr ("Нет"));
|
||||||
|
proxyTypeNames.insert (QNetworkProxy::Socks5Proxy, tr ("SOCKS 5"));
|
||||||
|
proxyTypeNames.insert (QNetworkProxy::HttpProxy, tr ("HTTP"));
|
||||||
|
QList<ProxyType> proxyOrder;
|
||||||
|
proxyOrder << QNetworkProxy::NoProxy << QNetworkProxy::Socks5Proxy << QNetworkProxy::HttpProxy;
|
||||||
|
foreach (ProxyType type, proxyOrder) {
|
||||||
|
ui->proxyTypeCombo->addItem (proxyTypeNames.value (type));
|
||||||
|
}
|
||||||
|
|
||||||
|
QRegExp urlRegexp (R"(^(https?:\/\/)?([\da-z\.-]+)\.([a-z\.]{2,6})([\/\w \.-]*)*\/?$)");
|
||||||
|
ui->proxyHostEdit->setValidator (new QRegExpValidator (urlRegexp, ui->proxyHostEdit));
|
||||||
|
ui->proxyPassEdit->setEchoMode (QLineEdit::PasswordEchoOnEdit);
|
||||||
|
|
||||||
loadSettings ();
|
loadSettings ();
|
||||||
loadState ();
|
loadState ();
|
||||||
}
|
}
|
||||||
@ -57,6 +76,20 @@ void SettingsEditor::saveSettings () const {
|
|||||||
settings.setValue (repeatHotkey, ui->repeatEdit->keySequence ().toString ());
|
settings.setValue (repeatHotkey, ui->repeatEdit->keySequence ().toString ());
|
||||||
settings.setValue (clipboardHotkey, ui->clipboardEdit->keySequence ().toString ());
|
settings.setValue (clipboardHotkey, ui->clipboardEdit->keySequence ().toString ());
|
||||||
settings.setValue (resultShowType, buttonGroup_->checkedId ());
|
settings.setValue (resultShowType, buttonGroup_->checkedId ());
|
||||||
|
settings.setValue (proxyType, ui->proxyTypeCombo->currentIndex ());
|
||||||
|
settings.setValue (proxyHostName, ui->proxyHostEdit->text ());
|
||||||
|
settings.setValue (proxyPort, ui->proxyPortSpin->value ());
|
||||||
|
settings.setValue (proxyUser, ui->proxyUserEdit->text ());
|
||||||
|
if (ui->proxySaveCheck->isChecked ()) {
|
||||||
|
settings.setValue (proxyPassword, encode (ui->proxyPassEdit->text ()));
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
settings.remove (proxyPassword);
|
||||||
|
QNetworkProxy proxy = QNetworkProxy::applicationProxy ();
|
||||||
|
proxy.setPassword (ui->proxyPassEdit->text ());
|
||||||
|
QNetworkProxy::setApplicationProxy (proxy);
|
||||||
|
}
|
||||||
|
settings.setValue (proxySavePassword, ui->proxySaveCheck->isChecked ());
|
||||||
settings.endGroup ();
|
settings.endGroup ();
|
||||||
|
|
||||||
|
|
||||||
@ -136,6 +169,17 @@ void SettingsEditor::loadSettings () {
|
|||||||
QAbstractButton *button = buttonGroup_->button (GET (resultShowType).toInt ());
|
QAbstractButton *button = buttonGroup_->button (GET (resultShowType).toInt ());
|
||||||
Q_CHECK_PTR (button);
|
Q_CHECK_PTR (button);
|
||||||
button->setChecked (true);
|
button->setChecked (true);
|
||||||
|
ui->proxyTypeCombo->setCurrentIndex (GET (proxyType).toInt ());
|
||||||
|
ui->proxyHostEdit->setText (GET (proxyHostName).toString ());
|
||||||
|
ui->proxyPortSpin->setValue (GET (proxyPort).toInt ());
|
||||||
|
ui->proxyUserEdit->setText (GET (proxyUser).toString ());
|
||||||
|
ui->proxySaveCheck->setChecked (GET (proxySavePassword).toBool ());
|
||||||
|
if (ui->proxySaveCheck->isChecked ()) {
|
||||||
|
ui->proxyPassEdit->setText (encode (GET (proxyPassword).toString ()));
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
ui->proxyPassEdit->setText (QNetworkProxy::applicationProxy ().password ());
|
||||||
|
}
|
||||||
settings.endGroup ();
|
settings.endGroup ();
|
||||||
|
|
||||||
settings.beginGroup (settings_names::recogntionGroup);
|
settings.beginGroup (settings_names::recogntionGroup);
|
||||||
|
@ -6,8 +6,8 @@
|
|||||||
<rect>
|
<rect>
|
||||||
<x>0</x>
|
<x>0</x>
|
||||||
<y>0</y>
|
<y>0</y>
|
||||||
<width>509</width>
|
<width>553</width>
|
||||||
<height>338</height>
|
<height>456</height>
|
||||||
</rect>
|
</rect>
|
||||||
</property>
|
</property>
|
||||||
<property name="windowTitle">
|
<property name="windowTitle">
|
||||||
@ -34,7 +34,7 @@
|
|||||||
<string>Общее</string>
|
<string>Общее</string>
|
||||||
</attribute>
|
</attribute>
|
||||||
<layout class="QGridLayout" name="gridLayout_5">
|
<layout class="QGridLayout" name="gridLayout_5">
|
||||||
<item row="0" column="0" colspan="2">
|
<item row="0" column="0">
|
||||||
<widget class="QGroupBox" name="groupBox">
|
<widget class="QGroupBox" name="groupBox">
|
||||||
<property name="title">
|
<property name="title">
|
||||||
<string>Горячие клавиши</string>
|
<string>Горячие клавиши</string>
|
||||||
@ -95,20 +95,7 @@
|
|||||||
</layout>
|
</layout>
|
||||||
</widget>
|
</widget>
|
||||||
</item>
|
</item>
|
||||||
<item row="2" column="1">
|
<item row="1" column="0">
|
||||||
<spacer name="verticalSpacer">
|
|
||||||
<property name="orientation">
|
|
||||||
<enum>Qt::Vertical</enum>
|
|
||||||
</property>
|
|
||||||
<property name="sizeHint" stdset="0">
|
|
||||||
<size>
|
|
||||||
<width>20</width>
|
|
||||||
<height>270</height>
|
|
||||||
</size>
|
|
||||||
</property>
|
|
||||||
</spacer>
|
|
||||||
</item>
|
|
||||||
<item row="1" column="0" colspan="2">
|
|
||||||
<widget class="QGroupBox" name="resultGroup">
|
<widget class="QGroupBox" name="resultGroup">
|
||||||
<property name="title">
|
<property name="title">
|
||||||
<string>Вывод результата</string>
|
<string>Вывод результата</string>
|
||||||
@ -134,6 +121,92 @@
|
|||||||
</layout>
|
</layout>
|
||||||
</widget>
|
</widget>
|
||||||
</item>
|
</item>
|
||||||
|
<item row="2" column="0">
|
||||||
|
<widget class="QGroupBox" name="groupBox_2">
|
||||||
|
<property name="title">
|
||||||
|
<string>Прокси</string>
|
||||||
|
</property>
|
||||||
|
<layout class="QGridLayout" name="gridLayout_3">
|
||||||
|
<item row="0" column="0">
|
||||||
|
<widget class="QLabel" name="label_12">
|
||||||
|
<property name="text">
|
||||||
|
<string>Тип:</string>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
<item row="0" column="1">
|
||||||
|
<widget class="QComboBox" name="proxyTypeCombo"/>
|
||||||
|
</item>
|
||||||
|
<item row="0" column="2">
|
||||||
|
<widget class="QLabel" name="label_15">
|
||||||
|
<property name="text">
|
||||||
|
<string>Пользователь:</string>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
<item row="0" column="3">
|
||||||
|
<widget class="QLineEdit" name="proxyUserEdit"/>
|
||||||
|
</item>
|
||||||
|
<item row="1" column="0">
|
||||||
|
<widget class="QLabel" name="label_13">
|
||||||
|
<property name="text">
|
||||||
|
<string>Адрес:</string>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
<item row="1" column="1">
|
||||||
|
<widget class="QLineEdit" name="proxyHostEdit"/>
|
||||||
|
</item>
|
||||||
|
<item row="1" column="2">
|
||||||
|
<widget class="QLabel" name="label_16">
|
||||||
|
<property name="text">
|
||||||
|
<string>Пароль:</string>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
<item row="1" column="3">
|
||||||
|
<widget class="QLineEdit" name="proxyPassEdit"/>
|
||||||
|
</item>
|
||||||
|
<item row="2" column="0">
|
||||||
|
<widget class="QLabel" name="label_14">
|
||||||
|
<property name="text">
|
||||||
|
<string>Порт:</string>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
<item row="2" column="1">
|
||||||
|
<widget class="QSpinBox" name="proxyPortSpin">
|
||||||
|
<property name="minimum">
|
||||||
|
<number>1</number>
|
||||||
|
</property>
|
||||||
|
<property name="maximum">
|
||||||
|
<number>65535</number>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
<item row="2" column="2" colspan="2">
|
||||||
|
<widget class="QCheckBox" name="proxySaveCheck">
|
||||||
|
<property name="text">
|
||||||
|
<string>Сохранять пароль (небезопасно)</string>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
</layout>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
<item row="3" column="0">
|
||||||
|
<spacer name="verticalSpacer">
|
||||||
|
<property name="orientation">
|
||||||
|
<enum>Qt::Vertical</enum>
|
||||||
|
</property>
|
||||||
|
<property name="sizeHint" stdset="0">
|
||||||
|
<size>
|
||||||
|
<width>20</width>
|
||||||
|
<height>270</height>
|
||||||
|
</size>
|
||||||
|
</property>
|
||||||
|
</spacer>
|
||||||
|
</item>
|
||||||
</layout>
|
</layout>
|
||||||
</widget>
|
</widget>
|
||||||
<widget class="QWidget" name="recognizeTab">
|
<widget class="QWidget" name="recognizeTab">
|
||||||
|
13
Utils.cpp
Normal file
13
Utils.cpp
Normal file
@ -0,0 +1,13 @@
|
|||||||
|
#include "Utils.h"
|
||||||
|
|
||||||
|
QString encode (const QString &source) {
|
||||||
|
if (source.isEmpty ()) {
|
||||||
|
return source;
|
||||||
|
}
|
||||||
|
char encKeys[] = {14, 26, 99, 43};
|
||||||
|
std::string result = source.toStdString ();
|
||||||
|
for (int i = 0, end = result.size (); i < end; ++i) {
|
||||||
|
result [i] = result[i] ^ encKeys[ i % sizeof(encKeys)];
|
||||||
|
}
|
||||||
|
return QString::fromUtf8 (result.data ());
|
||||||
|
}
|
Loading…
Reference in New Issue
Block a user