Mercurial > trustbridge
diff ui/proxysettingsdlg.cpp @ 955:0f7aeb12e5e9
(issue41) Add proxsettingsdialog
author | Andre Heinecke <andre.heinecke@intevation.de> |
---|---|
date | Wed, 27 Aug 2014 16:31:11 +0200 |
parents | |
children | c1f32c87716a |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/ui/proxysettingsdlg.cpp Wed Aug 27 16:31:11 2014 +0200 @@ -0,0 +1,80 @@ +/* Copyright (C) 2014 by Bundesamt für Sicherheit in der Informationstechnik + * Software engineering by Intevation GmbH + * + * This file is Free Software under the GNU GPL (v>=2) + * and comes with ABSOLUTELY NO WARRANTY! + * See LICENSE.txt for details. + */ + +#include <QHBoxLayout> +#include <QVBoxLayout> +#include <QLabel> +#include <QLineEdit> +#include <QSettings> +#include <QPushButton> +#include <QUrl> +#include <QDebug> +#include <QIcon> +#include <QPixmap> + +#include "proxysettingsdlg.h" + +ProxySettingsDlg::ProxySettingsDlg(QWidget *parent) : + QDialog (parent) { + setWindowIcon(QIcon(":/img/preferences-network_16.png")); + setWindowTitle(tr("Proxy server settings")); + QVBoxLayout *mainLayout = new QVBoxLayout(); + QHBoxLayout *iconTextLayout = new QHBoxLayout(); + QHBoxLayout *labelLineLayout = new QHBoxLayout(); + QHBoxLayout *okCancelLayout = new QHBoxLayout(); + + QSettings settings; + + QLabel *iconLabel = new QLabel(); + iconLabel->setPixmap(QPixmap(":/img/preferences-network_64.png")); + iconTextLayout->addWidget(iconLabel); + + QLabel *explanation = new QLabel(tr("Please enter the proxy server to use in the field below.") + + "</br>" + tr("The URL can follow the scheme:") + " " + + tr("<username>:<password>@<hostname>:<port>") + + "</br></br>"); + explanation->setTextFormat(Qt::RichText); + explanation->setWordWrap(true); + + iconTextLayout->addWidget(explanation); + mainLayout->addLayout(iconTextLayout); + + mProxyURL = new QLineEdit(settings.value("ProxyURL").toString()); + QLabel *proxyLabel = new QLabel(tr("Proxy Server:")); + proxyLabel->setBuddy(mProxyURL); + + labelLineLayout->addWidget(proxyLabel); + labelLineLayout->addWidget(mProxyURL); + + mSaveButton = new QPushButton (tr("&Save")); + QPushButton * cancelButton = new QPushButton (tr("&Cancel")); + okCancelLayout->addStretch(10); + okCancelLayout->addWidget(mSaveButton); + okCancelLayout->addWidget(cancelButton); + + connect(cancelButton, SIGNAL(clicked()), this, SLOT(reject())); + connect(mSaveButton, SIGNAL(clicked()), this, SLOT(save())); + connect(mProxyURL, SIGNAL(textChanged(const QString &)), + this, SLOT(checkCanSave(const QString&))); + + mainLayout->addLayout(labelLineLayout); + mainLayout->addLayout(okCancelLayout); + + setLayout(mainLayout); +} + +void ProxySettingsDlg::checkCanSave(const QString &val) { + mSaveButton->setEnabled(val.isEmpty() || QUrl(val).isValid()); +} + +void ProxySettingsDlg::save() { + QSettings settings; + settings.setValue("ProxyURL", mProxyURL->text()); + settings.sync(); + accept(); +}