NetworkProxyDialog::NetworkProxyDialog(QWidget *parent) : Dialog(parent), m_proxyTypeSelector(new ValueSelector(tr("Proxy type"), this)), m_hostEdit(new QLineEdit(this)), m_portEdit(new QLineEdit(this)), m_userEdit(new QLineEdit(this)), m_passEdit(new QLineEdit(this)) { setWindowTitle(tr("Network proxy")); m_proxyTypeSelector->setModel(new NetworkProxyTypeModel(this)); m_proxyTypeSelector->setValue(Settings::instance()->networkProxyType()); m_hostEdit->setMinimumWidth(380); m_hostEdit->setText(Settings::instance()->networkProxyHost()); m_portEdit->setValidator(new QIntValidator(0, 100000, this)); m_portEdit->setText(QString::number(Settings::instance()->networkProxyPort())); m_passEdit->setEchoMode(QLineEdit::Password); m_passEdit->setText(Settings::instance()->networkProxyPassword()); m_userEdit->setText(Settings::instance()->networkProxyUsername()); QGroupBox *proxyGroup = new QGroupBox(tr("Use network proxy"), this); proxyGroup->setCheckable(true); proxyGroup->setChecked(Settings::instance()->networkProxyEnabled()); QGridLayout *proxyGrid = new QGridLayout(proxyGroup); proxyGrid->setContentsMargins(0, 0, 0, 0); proxyGrid->addWidget(m_proxyTypeSelector, 0, 0, 1, 2); proxyGrid->addWidget(new QLabel(tr("Host"), this), 1, 0, 1, 1); proxyGrid->addWidget(new QLabel(tr("Port"), this), 1, 1, 1, 1); proxyGrid->addWidget(m_hostEdit, 2, 0, 1, 1); proxyGrid->addWidget(m_portEdit, 2, 1, 1, 1); proxyGrid->addWidget(new QLabel(tr("Username"), this), 3, 0, 1, 2); proxyGrid->addWidget(m_userEdit, 4, 0, 1, 2); proxyGrid->addWidget(new QLabel(tr("Password"), this), 5, 0, 1, 2); proxyGrid->addWidget(m_passEdit, 6, 0, 1, 2); QWidget *scrollWidget = new QWidget(this); QVBoxLayout *vbox = new QVBoxLayout(scrollWidget); vbox->setContentsMargins(0, 0, 0, 0); vbox->addWidget(proxyGroup); QScrollArea *scrollArea = new QScrollArea(this); scrollArea->setWidgetResizable(true); scrollArea->setWidget(scrollWidget); QDialogButtonBox *buttonBox = new QDialogButtonBox(QDialogButtonBox::Ok | QDialogButtonBox::Cancel, Qt::Vertical, this); QHBoxLayout *hbox = new QHBoxLayout(this); hbox->addWidget(scrollArea); hbox->addWidget(buttonBox); connect(buttonBox, SIGNAL(accepted()), this, SLOT(accept())); connect(buttonBox, SIGNAL(rejected()), this, SLOT(reject())); connect(proxyGroup, SIGNAL(toggled(bool)), Settings::instance(), SLOT(setNetworkProxyEnabled(bool))); connect(m_proxyTypeSelector, SIGNAL(valueChanged(QVariant)), this, SLOT(setNetworkProxyType(QVariant))); connect(m_hostEdit, SIGNAL(textEdited(QString)), Settings::instance(), SLOT(setNetworkProxyHost(QString))); connect(m_portEdit, SIGNAL(textEdited(QString)), this, SLOT(setNetworkProxyPort(QString))); connect(m_userEdit, SIGNAL(textEdited(QString)), Settings::instance(), SLOT(setNetworkProxyUsername(QString))); connect(m_passEdit, SIGNAL(textEdited(QString)), Settings::instance(), SLOT(setNetworkProxyPassword(QString))); }
void SettingsDialog::showNetworkTab() { if (!m_networkTab) { m_networkTab = new QWidget(m_stack); m_proxyGroupBox = new QGroupBox(tr("Use network proxy"), m_networkTab); m_proxyGroupBox->setCheckable(true); m_proxyGroupBox->setChecked(Settings::networkProxyEnabled()); m_proxyTypeModel = new NetworkProxyTypeModel(m_proxyGroupBox); m_proxyTypeSelector = new QComboBox(m_proxyGroupBox); m_proxyTypeSelector->setModel(m_proxyTypeModel); m_proxyTypeSelector->setCurrentIndex(m_proxyTypeModel->match(0, "value", Settings::networkProxyType())); m_proxyHostEdit = new QLineEdit(Settings::networkProxyHost(), m_proxyGroupBox); m_proxyPortSpinBox = new QSpinBox(m_proxyGroupBox); m_proxyPortSpinBox->setRange(1, 9999); m_proxyPortSpinBox->setValue(Settings::networkProxyPort()); m_proxyUsernameEdit = new QLineEdit(Settings::networkProxyUsername(), m_proxyGroupBox); m_proxyPasswordEdit = new QLineEdit(Settings::networkProxyPassword(), m_proxyGroupBox); m_proxyPasswordEdit->setEchoMode(QLineEdit::Password); QFormLayout *form = new QFormLayout(m_proxyGroupBox); form->addRow(tr("&Type:"), m_proxyTypeSelector); form->addRow(tr("&Host:"), m_proxyHostEdit); form->addRow(tr("&Port:"), m_proxyPortSpinBox); form->addRow(tr("&Username:"******"&Password:"), m_proxyPasswordEdit); QVBoxLayout *vbox = new QVBoxLayout(m_networkTab); vbox->addWidget(m_proxyGroupBox); connect(m_proxyGroupBox, SIGNAL(toggled(bool)), Settings::instance(), SLOT(setNetworkProxyEnabled(bool))); connect(m_proxyTypeSelector, SIGNAL(activated(int)), this, SLOT(setNetworkProxyType(int))); connect(m_proxyHostEdit, SIGNAL(textChanged(QString)), Settings::instance(), SLOT(setNetworkProxyHost(QString))); connect(m_proxyPortSpinBox, SIGNAL(valueChanged(int)), Settings::instance(), SLOT(setNetworkProxyPort(int))); connect(m_proxyUsernameEdit, SIGNAL(textChanged(QString)), Settings::instance(), SLOT(setNetworkProxyUsername(QString))); connect(m_proxyPasswordEdit, SIGNAL(textChanged(QString)), Settings::instance(), SLOT(setNetworkProxyPassword(QString))); m_stack->addWidget(m_networkTab); }