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("&lt;username&gt;:&lt;password&gt;@&lt;hostname&gt;:&lt;port&gt;") +
+        "</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

http://wald.intevation.org/projects/trustbridge/