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 <QMessageBox>
|
||||
#include <QInputDialog>
|
||||
#include <QNetworkProxy>
|
||||
|
||||
#include "Settings.h"
|
||||
#include "SettingsEditor.h"
|
||||
@ -21,6 +22,7 @@
|
||||
#include "ResultDialog.h"
|
||||
#include "LanguageHelper.h"
|
||||
#include "StAssert.h"
|
||||
#include "Utils.h"
|
||||
|
||||
Manager::Manager (QObject *parent) :
|
||||
QObject (parent),
|
||||
@ -155,6 +157,16 @@ void Manager::applySettings () {
|
||||
|
||||
// Depends on SettingsEditor button indexes. 1==dialog
|
||||
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.beginGroup (settings_names::translationGroup);
|
||||
|
@ -40,7 +40,8 @@ SOURCES += main.cpp\
|
||||
WebTranslator.cpp \
|
||||
WebTranslatorProxy.cpp \
|
||||
TranslatorHelper.cpp \
|
||||
RecognizerHelper.cpp
|
||||
RecognizerHelper.cpp \
|
||||
Utils.cpp
|
||||
|
||||
HEADERS += \
|
||||
Manager.h \
|
||||
@ -57,7 +58,8 @@ HEADERS += \
|
||||
WebTranslatorProxy.h \
|
||||
StAssert.h \
|
||||
TranslatorHelper.h \
|
||||
RecognizerHelper.h
|
||||
RecognizerHelper.h \
|
||||
Utils.h
|
||||
|
||||
FORMS += \
|
||||
SettingsEditor.ui \
|
||||
|
13
Settings.h
13
Settings.h
@ -12,6 +12,12 @@ namespace settings_names {
|
||||
const QString repeatHotkey = "repeatHotkey";
|
||||
const QString clipboardHotkey = "clipboardHotkey";
|
||||
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
|
||||
const QString recogntionGroup = "Recognition";
|
||||
@ -27,7 +33,6 @@ namespace settings_names {
|
||||
const QString translationTimeout = "translation_timeout";
|
||||
const QString translationDebugMode = "translation_debug";
|
||||
const QString translators = "translators";
|
||||
|
||||
}
|
||||
|
||||
namespace settings_values {
|
||||
@ -40,6 +45,12 @@ namespace settings_values {
|
||||
const QString repeatHotkey = "Ctrl+Alt+X";
|
||||
const QString clipboardHotkey = "Ctrl+Alt+C";
|
||||
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
|
||||
const QString tessDataPlace = "./";
|
||||
|
@ -4,10 +4,13 @@
|
||||
#include "TranslatorHelper.h"
|
||||
#include "RecognizerHelper.h"
|
||||
#include "StAssert.h"
|
||||
#include "Utils.h"
|
||||
|
||||
#include <QSettings>
|
||||
#include <QFileDialog>
|
||||
#include <QDir>
|
||||
#include <QRegExpValidator>
|
||||
#include <QNetworkProxy>
|
||||
|
||||
#include "Settings.h"
|
||||
|
||||
@ -29,6 +32,22 @@ SettingsEditor::SettingsEditor (const LanguageHelper &dictionary, QWidget *paren
|
||||
SLOT (recognizerFixTableItemChanged (QTableWidgetItem *)));
|
||||
|
||||
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 ();
|
||||
loadState ();
|
||||
}
|
||||
@ -57,6 +76,20 @@ void SettingsEditor::saveSettings () const {
|
||||
settings.setValue (repeatHotkey, ui->repeatEdit->keySequence ().toString ());
|
||||
settings.setValue (clipboardHotkey, ui->clipboardEdit->keySequence ().toString ());
|
||||
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 ();
|
||||
|
||||
|
||||
@ -136,6 +169,17 @@ void SettingsEditor::loadSettings () {
|
||||
QAbstractButton *button = buttonGroup_->button (GET (resultShowType).toInt ());
|
||||
Q_CHECK_PTR (button);
|
||||
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.beginGroup (settings_names::recogntionGroup);
|
||||
|
@ -6,8 +6,8 @@
|
||||
<rect>
|
||||
<x>0</x>
|
||||
<y>0</y>
|
||||
<width>509</width>
|
||||
<height>338</height>
|
||||
<width>553</width>
|
||||
<height>456</height>
|
||||
</rect>
|
||||
</property>
|
||||
<property name="windowTitle">
|
||||
@ -34,7 +34,7 @@
|
||||
<string>Общее</string>
|
||||
</attribute>
|
||||
<layout class="QGridLayout" name="gridLayout_5">
|
||||
<item row="0" column="0" colspan="2">
|
||||
<item row="0" column="0">
|
||||
<widget class="QGroupBox" name="groupBox">
|
||||
<property name="title">
|
||||
<string>Горячие клавиши</string>
|
||||
@ -95,20 +95,7 @@
|
||||
</layout>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="2" column="1">
|
||||
<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">
|
||||
<item row="1" column="0">
|
||||
<widget class="QGroupBox" name="resultGroup">
|
||||
<property name="title">
|
||||
<string>Вывод результата</string>
|
||||
@ -134,6 +121,92 @@
|
||||
</layout>
|
||||
</widget>
|
||||
</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>
|
||||
</widget>
|
||||
<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