Mercurial > trustbridge
changeset 955:0f7aeb12e5e9
(issue41) Add proxsettingsdialog
author | Andre Heinecke <andre.heinecke@intevation.de> |
---|---|
date | Wed, 27 Aug 2014 16:31:11 +0200 (2014-08-27) |
parents | eaea1504f282 |
children | 879a634d0a40 |
files | ui/CMakeLists.txt ui/proxysettingsdlg.cpp ui/proxysettingsdlg.h |
diffstat | 3 files changed, 118 insertions(+), 0 deletions(-) [+] |
line wrap: on
line diff
--- a/ui/CMakeLists.txt Wed Aug 27 16:29:55 2014 +0200 +++ b/ui/CMakeLists.txt Wed Aug 27 16:31:11 2014 +0200 @@ -52,6 +52,7 @@ ${CMAKE_CURRENT_SOURCE_DIR}/textoverlaybutton.cpp ${CMAKE_CURRENT_SOURCE_DIR}/taskscheduler.cpp ${CMAKE_CURRENT_SOURCE_DIR}/trayicon.cpp + ${CMAKE_CURRENT_SOURCE_DIR}/proxysettingsdlg.cpp ${CERTIFICATELIST_SOURCES} ${DOWNLOADER_SOURCES} )
--- /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(); +}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/ui/proxysettingsdlg.h Wed Aug 27 16:31:11 2014 +0200 @@ -0,0 +1,37 @@ +/* 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. + */ +#ifndef PROXYSETTINGSDLG_H +#define PROXYSETTINGSDLG_H + +#include <QDialog> + +class QLineEdit; +class QPushButton; + +/** @file Small dialog for proxy settings. */ + +class ProxySettingsDlg : public QDialog { + + Q_OBJECT + +public: + ProxySettingsDlg(QWidget *parent); + +private slots: + /** @brief activate the save button depending on the input.*/ + void checkCanSave(const QString& val); + + /** @brief save the contents of mProxyURL in the settings. */ + void save(); + +private: + QLineEdit *mProxyURL; + QPushButton *mSaveButton; +}; + +#endif // PROXYSETTINGSDLG_H