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