NetworkProxyDialog::NetworkProxyDialog(QSettings &t_settings, QWidget *t_parent = 0) : QDialog(t_parent), m_settings(t_settings) { QGridLayout *layout = new QGridLayout(this); // NoProxy, DefaultProxy, Socks5Proxy, HttpProxy, HttpCachingProxy, FtpCachingProxy m_proxyType = new QComboBox(); m_proxyType->addItem("No Proxy", QNetworkProxy::NoProxy); // Allow http only for now since that's known to be supported by ruby / aws // m_proxyType->addItem("Socks5 Proxy", QNetworkProxy::Socks5Proxy); m_proxyType->addItem("Http Proxy", QNetworkProxy::HttpProxy); connect(m_proxyType, SIGNAL(currentIndexChanged(int)), this, SLOT(proxyTypeChanged(int))); m_hostName = new QLineEdit(this); m_port = new QLineEdit(this); m_port->setValidator(new QIntValidator(0, 65535)); m_user = new QLineEdit(this); layout->addWidget(new QLabel("Proxy Type"), 0, 0); layout->addWidget(m_proxyType, 0, 1); layout->addWidget(new QLabel("Host Name"), 1, 0); layout->addWidget(m_hostName, 1, 1); layout->addWidget(new QLabel("Port"), 2, 0); layout->addWidget(m_port, 2, 1); layout->addWidget(new QLabel("User Name"), 3, 0); layout->addWidget(m_user, 3, 1); QHBoxLayout *buttonBox = new QHBoxLayout(); QPushButton *saveButton = new QPushButton("Save"); QPushButton *cancelButton = new QPushButton("Cancel"); QPushButton *testButton = new QPushButton("Test"); buttonBox->addWidget(saveButton); buttonBox->addWidget(cancelButton); buttonBox->addWidget(testButton); layout->addLayout(buttonBox, 4,0,1,2); connect(saveButton, SIGNAL(clicked()), this, SLOT(saveClicked())); connect(cancelButton, SIGNAL(clicked()), this, SLOT(cancelClicked())); connect(testButton, SIGNAL(clicked()), this, SLOT(testClicked())); QNetworkProxy proxy(createProxy(t_settings)); int type = m_proxyType->findData(proxy.type()); QString user = proxy.user(); QString hostname = proxy.hostName(); int port = proxy.port(); m_proxyType->setCurrentIndex(type>-1?type:0); m_user->setText(user); m_hostName->setText(hostname); m_port->setText(QString::number(port)); proxyTypeChanged(m_proxyType->currentIndex()); }
/* Slots */ void ProxyConfigWidget::load() { QSettings settings(QSettings::IniFormat, QSettings::UserScope, qApp->organizationName(), qApp->applicationName()); QString proxy = settings.value("proxy/type", "none").toString().toLower(); if (proxy == "http") proxyType->setCurrentIndex(1); else if (proxy == "socks5") proxyType->setCurrentIndex(2); else if (proxy == "none") { proxyType->setCurrentIndex(0); proxyTypeChanged(0); } proxyHost->setText(settings.value("proxy/host").toString()); proxyPort->setText(settings.value("proxy/port").toString()); proxyUser->setText(settings.value("proxy/user").toString()); proxyPass->setText(settings.value("proxy/pass").toString()); }