annotate ui/proxysettingsdlg.cpp @ 1119:5349e2354c48

(issue54) Merge branch runafterinstall There is now an NSIS Plugin that executes the Software after installation using COM in the shell of the current user. With the way over the shell there is no inheritance / token management required. As it is impossible to drop all privileges of a token granted by UAC and still be able to reelevate the Token again with another RunAs call later this round trip over the Shell was necessary.
author Andre Heinecke <andre.heinecke@intevation.de>
date Tue, 16 Sep 2014 19:48:22 +0200
parents 8a1071fee883
children
rev   line source
955
0f7aeb12e5e9 (issue41) Add proxsettingsdialog
Andre Heinecke <andre.heinecke@intevation.de>
parents:
diff changeset
1 /* Copyright (C) 2014 by Bundesamt für Sicherheit in der Informationstechnik
0f7aeb12e5e9 (issue41) Add proxsettingsdialog
Andre Heinecke <andre.heinecke@intevation.de>
parents:
diff changeset
2 * Software engineering by Intevation GmbH
0f7aeb12e5e9 (issue41) Add proxsettingsdialog
Andre Heinecke <andre.heinecke@intevation.de>
parents:
diff changeset
3 *
0f7aeb12e5e9 (issue41) Add proxsettingsdialog
Andre Heinecke <andre.heinecke@intevation.de>
parents:
diff changeset
4 * This file is Free Software under the GNU GPL (v>=2)
0f7aeb12e5e9 (issue41) Add proxsettingsdialog
Andre Heinecke <andre.heinecke@intevation.de>
parents:
diff changeset
5 * and comes with ABSOLUTELY NO WARRANTY!
0f7aeb12e5e9 (issue41) Add proxsettingsdialog
Andre Heinecke <andre.heinecke@intevation.de>
parents:
diff changeset
6 * See LICENSE.txt for details.
0f7aeb12e5e9 (issue41) Add proxsettingsdialog
Andre Heinecke <andre.heinecke@intevation.de>
parents:
diff changeset
7 */
0f7aeb12e5e9 (issue41) Add proxsettingsdialog
Andre Heinecke <andre.heinecke@intevation.de>
parents:
diff changeset
8
0f7aeb12e5e9 (issue41) Add proxsettingsdialog
Andre Heinecke <andre.heinecke@intevation.de>
parents:
diff changeset
9 #include <QHBoxLayout>
0f7aeb12e5e9 (issue41) Add proxsettingsdialog
Andre Heinecke <andre.heinecke@intevation.de>
parents:
diff changeset
10 #include <QVBoxLayout>
0f7aeb12e5e9 (issue41) Add proxsettingsdialog
Andre Heinecke <andre.heinecke@intevation.de>
parents:
diff changeset
11 #include <QLabel>
0f7aeb12e5e9 (issue41) Add proxsettingsdialog
Andre Heinecke <andre.heinecke@intevation.de>
parents:
diff changeset
12 #include <QLineEdit>
0f7aeb12e5e9 (issue41) Add proxsettingsdialog
Andre Heinecke <andre.heinecke@intevation.de>
parents:
diff changeset
13 #include <QSettings>
0f7aeb12e5e9 (issue41) Add proxsettingsdialog
Andre Heinecke <andre.heinecke@intevation.de>
parents:
diff changeset
14 #include <QPushButton>
0f7aeb12e5e9 (issue41) Add proxsettingsdialog
Andre Heinecke <andre.heinecke@intevation.de>
parents:
diff changeset
15 #include <QUrl>
0f7aeb12e5e9 (issue41) Add proxsettingsdialog
Andre Heinecke <andre.heinecke@intevation.de>
parents:
diff changeset
16 #include <QDebug>
0f7aeb12e5e9 (issue41) Add proxsettingsdialog
Andre Heinecke <andre.heinecke@intevation.de>
parents:
diff changeset
17 #include <QIcon>
0f7aeb12e5e9 (issue41) Add proxsettingsdialog
Andre Heinecke <andre.heinecke@intevation.de>
parents:
diff changeset
18 #include <QPixmap>
1062
515345358b71 (issue41) Add and use a UseProxy checkbox
Andre Heinecke <andre.heinecke@intevation.de>
parents: 1009
diff changeset
19 #include <QCheckBox>
955
0f7aeb12e5e9 (issue41) Add proxsettingsdialog
Andre Heinecke <andre.heinecke@intevation.de>
parents:
diff changeset
20
0f7aeb12e5e9 (issue41) Add proxsettingsdialog
Andre Heinecke <andre.heinecke@intevation.de>
parents:
diff changeset
21 #include "proxysettingsdlg.h"
0f7aeb12e5e9 (issue41) Add proxsettingsdialog
Andre Heinecke <andre.heinecke@intevation.de>
parents:
diff changeset
22
0f7aeb12e5e9 (issue41) Add proxsettingsdialog
Andre Heinecke <andre.heinecke@intevation.de>
parents:
diff changeset
23 ProxySettingsDlg::ProxySettingsDlg(QWidget *parent) :
0f7aeb12e5e9 (issue41) Add proxsettingsdialog
Andre Heinecke <andre.heinecke@intevation.de>
parents:
diff changeset
24 QDialog (parent) {
0f7aeb12e5e9 (issue41) Add proxsettingsdialog
Andre Heinecke <andre.heinecke@intevation.de>
parents:
diff changeset
25 setWindowIcon(QIcon(":/img/preferences-network_16.png"));
0f7aeb12e5e9 (issue41) Add proxsettingsdialog
Andre Heinecke <andre.heinecke@intevation.de>
parents:
diff changeset
26 setWindowTitle(tr("Proxy server settings"));
0f7aeb12e5e9 (issue41) Add proxsettingsdialog
Andre Heinecke <andre.heinecke@intevation.de>
parents:
diff changeset
27 QVBoxLayout *mainLayout = new QVBoxLayout();
0f7aeb12e5e9 (issue41) Add proxsettingsdialog
Andre Heinecke <andre.heinecke@intevation.de>
parents:
diff changeset
28 QHBoxLayout *iconTextLayout = new QHBoxLayout();
0f7aeb12e5e9 (issue41) Add proxsettingsdialog
Andre Heinecke <andre.heinecke@intevation.de>
parents:
diff changeset
29 QHBoxLayout *labelLineLayout = new QHBoxLayout();
0f7aeb12e5e9 (issue41) Add proxsettingsdialog
Andre Heinecke <andre.heinecke@intevation.de>
parents:
diff changeset
30 QHBoxLayout *okCancelLayout = new QHBoxLayout();
0f7aeb12e5e9 (issue41) Add proxsettingsdialog
Andre Heinecke <andre.heinecke@intevation.de>
parents:
diff changeset
31
0f7aeb12e5e9 (issue41) Add proxsettingsdialog
Andre Heinecke <andre.heinecke@intevation.de>
parents:
diff changeset
32 QSettings settings;
0f7aeb12e5e9 (issue41) Add proxsettingsdialog
Andre Heinecke <andre.heinecke@intevation.de>
parents:
diff changeset
33
0f7aeb12e5e9 (issue41) Add proxsettingsdialog
Andre Heinecke <andre.heinecke@intevation.de>
parents:
diff changeset
34 QLabel *iconLabel = new QLabel();
0f7aeb12e5e9 (issue41) Add proxsettingsdialog
Andre Heinecke <andre.heinecke@intevation.de>
parents:
diff changeset
35 iconLabel->setPixmap(QPixmap(":/img/preferences-network_64.png"));
0f7aeb12e5e9 (issue41) Add proxsettingsdialog
Andre Heinecke <andre.heinecke@intevation.de>
parents:
diff changeset
36 iconTextLayout->addWidget(iconLabel);
0f7aeb12e5e9 (issue41) Add proxsettingsdialog
Andre Heinecke <andre.heinecke@intevation.de>
parents:
diff changeset
37
0f7aeb12e5e9 (issue41) Add proxsettingsdialog
Andre Heinecke <andre.heinecke@intevation.de>
parents:
diff changeset
38 QLabel *explanation = new QLabel(tr("Please enter the proxy server to use in the field below.") +
1009
c1f32c87716a Fixed label and translation string.
Emanuel Schuetze <emanuel@intevation.de>
parents: 955
diff changeset
39 " " + tr("The URL can follow the scheme:") + "<br/>" +
1063
8a1071fee883 Fixed proxy server label.
Emanuel Schuetze <emanuel@intevation.de>
parents: 1062
diff changeset
40 tr("[&lt;username&gt;:&lt;password&gt;@]&lt;hostname&gt;[:&lt;port&gt;]") +
1009
c1f32c87716a Fixed label and translation string.
Emanuel Schuetze <emanuel@intevation.de>
parents: 955
diff changeset
41 "<br/></br/>");
955
0f7aeb12e5e9 (issue41) Add proxsettingsdialog
Andre Heinecke <andre.heinecke@intevation.de>
parents:
diff changeset
42 explanation->setTextFormat(Qt::RichText);
0f7aeb12e5e9 (issue41) Add proxsettingsdialog
Andre Heinecke <andre.heinecke@intevation.de>
parents:
diff changeset
43 explanation->setWordWrap(true);
0f7aeb12e5e9 (issue41) Add proxsettingsdialog
Andre Heinecke <andre.heinecke@intevation.de>
parents:
diff changeset
44
0f7aeb12e5e9 (issue41) Add proxsettingsdialog
Andre Heinecke <andre.heinecke@intevation.de>
parents:
diff changeset
45 iconTextLayout->addWidget(explanation);
0f7aeb12e5e9 (issue41) Add proxsettingsdialog
Andre Heinecke <andre.heinecke@intevation.de>
parents:
diff changeset
46 mainLayout->addLayout(iconTextLayout);
0f7aeb12e5e9 (issue41) Add proxsettingsdialog
Andre Heinecke <andre.heinecke@intevation.de>
parents:
diff changeset
47
1062
515345358b71 (issue41) Add and use a UseProxy checkbox
Andre Heinecke <andre.heinecke@intevation.de>
parents: 1009
diff changeset
48 bool useProxy = settings.value("UseProxy", false).toBool();
515345358b71 (issue41) Add and use a UseProxy checkbox
Andre Heinecke <andre.heinecke@intevation.de>
parents: 1009
diff changeset
49 mCheckBox = new QCheckBox(tr("Use Proxy Server"));
515345358b71 (issue41) Add and use a UseProxy checkbox
Andre Heinecke <andre.heinecke@intevation.de>
parents: 1009
diff changeset
50 mCheckBox->setTristate(false);
515345358b71 (issue41) Add and use a UseProxy checkbox
Andre Heinecke <andre.heinecke@intevation.de>
parents: 1009
diff changeset
51 mCheckBox->setCheckState(useProxy ? Qt::Checked : Qt::Unchecked);
515345358b71 (issue41) Add and use a UseProxy checkbox
Andre Heinecke <andre.heinecke@intevation.de>
parents: 1009
diff changeset
52
515345358b71 (issue41) Add and use a UseProxy checkbox
Andre Heinecke <andre.heinecke@intevation.de>
parents: 1009
diff changeset
53 mainLayout->addWidget(mCheckBox);
515345358b71 (issue41) Add and use a UseProxy checkbox
Andre Heinecke <andre.heinecke@intevation.de>
parents: 1009
diff changeset
54
955
0f7aeb12e5e9 (issue41) Add proxsettingsdialog
Andre Heinecke <andre.heinecke@intevation.de>
parents:
diff changeset
55 mProxyURL = new QLineEdit(settings.value("ProxyURL").toString());
0f7aeb12e5e9 (issue41) Add proxsettingsdialog
Andre Heinecke <andre.heinecke@intevation.de>
parents:
diff changeset
56 QLabel *proxyLabel = new QLabel(tr("Proxy Server:"));
0f7aeb12e5e9 (issue41) Add proxsettingsdialog
Andre Heinecke <andre.heinecke@intevation.de>
parents:
diff changeset
57 proxyLabel->setBuddy(mProxyURL);
1062
515345358b71 (issue41) Add and use a UseProxy checkbox
Andre Heinecke <andre.heinecke@intevation.de>
parents: 1009
diff changeset
58 mProxyURL->setReadOnly(!useProxy);
515345358b71 (issue41) Add and use a UseProxy checkbox
Andre Heinecke <andre.heinecke@intevation.de>
parents: 1009
diff changeset
59 mProxyURL->setEnabled(useProxy);
955
0f7aeb12e5e9 (issue41) Add proxsettingsdialog
Andre Heinecke <andre.heinecke@intevation.de>
parents:
diff changeset
60
0f7aeb12e5e9 (issue41) Add proxsettingsdialog
Andre Heinecke <andre.heinecke@intevation.de>
parents:
diff changeset
61 labelLineLayout->addWidget(proxyLabel);
0f7aeb12e5e9 (issue41) Add proxsettingsdialog
Andre Heinecke <andre.heinecke@intevation.de>
parents:
diff changeset
62 labelLineLayout->addWidget(mProxyURL);
0f7aeb12e5e9 (issue41) Add proxsettingsdialog
Andre Heinecke <andre.heinecke@intevation.de>
parents:
diff changeset
63
0f7aeb12e5e9 (issue41) Add proxsettingsdialog
Andre Heinecke <andre.heinecke@intevation.de>
parents:
diff changeset
64 mSaveButton = new QPushButton (tr("&Save"));
0f7aeb12e5e9 (issue41) Add proxsettingsdialog
Andre Heinecke <andre.heinecke@intevation.de>
parents:
diff changeset
65 QPushButton * cancelButton = new QPushButton (tr("&Cancel"));
0f7aeb12e5e9 (issue41) Add proxsettingsdialog
Andre Heinecke <andre.heinecke@intevation.de>
parents:
diff changeset
66 okCancelLayout->addStretch(10);
0f7aeb12e5e9 (issue41) Add proxsettingsdialog
Andre Heinecke <andre.heinecke@intevation.de>
parents:
diff changeset
67 okCancelLayout->addWidget(mSaveButton);
0f7aeb12e5e9 (issue41) Add proxsettingsdialog
Andre Heinecke <andre.heinecke@intevation.de>
parents:
diff changeset
68 okCancelLayout->addWidget(cancelButton);
0f7aeb12e5e9 (issue41) Add proxsettingsdialog
Andre Heinecke <andre.heinecke@intevation.de>
parents:
diff changeset
69
0f7aeb12e5e9 (issue41) Add proxsettingsdialog
Andre Heinecke <andre.heinecke@intevation.de>
parents:
diff changeset
70 connect(cancelButton, SIGNAL(clicked()), this, SLOT(reject()));
0f7aeb12e5e9 (issue41) Add proxsettingsdialog
Andre Heinecke <andre.heinecke@intevation.de>
parents:
diff changeset
71 connect(mSaveButton, SIGNAL(clicked()), this, SLOT(save()));
0f7aeb12e5e9 (issue41) Add proxsettingsdialog
Andre Heinecke <andre.heinecke@intevation.de>
parents:
diff changeset
72 connect(mProxyURL, SIGNAL(textChanged(const QString &)),
0f7aeb12e5e9 (issue41) Add proxsettingsdialog
Andre Heinecke <andre.heinecke@intevation.de>
parents:
diff changeset
73 this, SLOT(checkCanSave(const QString&)));
1062
515345358b71 (issue41) Add and use a UseProxy checkbox
Andre Heinecke <andre.heinecke@intevation.de>
parents: 1009
diff changeset
74 connect(mCheckBox, SIGNAL(stateChanged(int)), this, SLOT(checkCanEdit(int)));
955
0f7aeb12e5e9 (issue41) Add proxsettingsdialog
Andre Heinecke <andre.heinecke@intevation.de>
parents:
diff changeset
75
0f7aeb12e5e9 (issue41) Add proxsettingsdialog
Andre Heinecke <andre.heinecke@intevation.de>
parents:
diff changeset
76 mainLayout->addLayout(labelLineLayout);
0f7aeb12e5e9 (issue41) Add proxsettingsdialog
Andre Heinecke <andre.heinecke@intevation.de>
parents:
diff changeset
77 mainLayout->addLayout(okCancelLayout);
0f7aeb12e5e9 (issue41) Add proxsettingsdialog
Andre Heinecke <andre.heinecke@intevation.de>
parents:
diff changeset
78
0f7aeb12e5e9 (issue41) Add proxsettingsdialog
Andre Heinecke <andre.heinecke@intevation.de>
parents:
diff changeset
79 setLayout(mainLayout);
0f7aeb12e5e9 (issue41) Add proxsettingsdialog
Andre Heinecke <andre.heinecke@intevation.de>
parents:
diff changeset
80 }
0f7aeb12e5e9 (issue41) Add proxsettingsdialog
Andre Heinecke <andre.heinecke@intevation.de>
parents:
diff changeset
81
0f7aeb12e5e9 (issue41) Add proxsettingsdialog
Andre Heinecke <andre.heinecke@intevation.de>
parents:
diff changeset
82 void ProxySettingsDlg::checkCanSave(const QString &val) {
1062
515345358b71 (issue41) Add and use a UseProxy checkbox
Andre Heinecke <andre.heinecke@intevation.de>
parents: 1009
diff changeset
83 mSaveButton->setEnabled(mCheckBox->checkState() == Qt::Unchecked ||
515345358b71 (issue41) Add and use a UseProxy checkbox
Andre Heinecke <andre.heinecke@intevation.de>
parents: 1009
diff changeset
84 QUrl(val).isValid());
515345358b71 (issue41) Add and use a UseProxy checkbox
Andre Heinecke <andre.heinecke@intevation.de>
parents: 1009
diff changeset
85 }
515345358b71 (issue41) Add and use a UseProxy checkbox
Andre Heinecke <andre.heinecke@intevation.de>
parents: 1009
diff changeset
86
515345358b71 (issue41) Add and use a UseProxy checkbox
Andre Heinecke <andre.heinecke@intevation.de>
parents: 1009
diff changeset
87 void ProxySettingsDlg::checkCanEdit(int state) {
515345358b71 (issue41) Add and use a UseProxy checkbox
Andre Heinecke <andre.heinecke@intevation.de>
parents: 1009
diff changeset
88 mProxyURL->setReadOnly(state != Qt::Checked);
515345358b71 (issue41) Add and use a UseProxy checkbox
Andre Heinecke <andre.heinecke@intevation.de>
parents: 1009
diff changeset
89 mProxyURL->setEnabled(state == Qt::Checked);
955
0f7aeb12e5e9 (issue41) Add proxsettingsdialog
Andre Heinecke <andre.heinecke@intevation.de>
parents:
diff changeset
90 }
0f7aeb12e5e9 (issue41) Add proxsettingsdialog
Andre Heinecke <andre.heinecke@intevation.de>
parents:
diff changeset
91
0f7aeb12e5e9 (issue41) Add proxsettingsdialog
Andre Heinecke <andre.heinecke@intevation.de>
parents:
diff changeset
92 void ProxySettingsDlg::save() {
0f7aeb12e5e9 (issue41) Add proxsettingsdialog
Andre Heinecke <andre.heinecke@intevation.de>
parents:
diff changeset
93 QSettings settings;
0f7aeb12e5e9 (issue41) Add proxsettingsdialog
Andre Heinecke <andre.heinecke@intevation.de>
parents:
diff changeset
94 settings.setValue("ProxyURL", mProxyURL->text());
1062
515345358b71 (issue41) Add and use a UseProxy checkbox
Andre Heinecke <andre.heinecke@intevation.de>
parents: 1009
diff changeset
95 settings.setValue("UseProxy", mCheckBox->checkState() == Qt::Checked);
955
0f7aeb12e5e9 (issue41) Add proxsettingsdialog
Andre Heinecke <andre.heinecke@intevation.de>
parents:
diff changeset
96 settings.sync();
0f7aeb12e5e9 (issue41) Add proxsettingsdialog
Andre Heinecke <andre.heinecke@intevation.de>
parents:
diff changeset
97 accept();
0f7aeb12e5e9 (issue41) Add proxsettingsdialog
Andre Heinecke <andre.heinecke@intevation.de>
parents:
diff changeset
98 }

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