summaryrefslogtreecommitdiff
path: root/client-qt/udm-client-qt/connect_widget.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'client-qt/udm-client-qt/connect_widget.cpp')
-rw-r--r--client-qt/udm-client-qt/connect_widget.cpp129
1 files changed, 122 insertions, 7 deletions
diff --git a/client-qt/udm-client-qt/connect_widget.cpp b/client-qt/udm-client-qt/connect_widget.cpp
index a33c49b..2c35ea2 100644
--- a/client-qt/udm-client-qt/connect_widget.cpp
+++ b/client-qt/udm-client-qt/connect_widget.cpp
@@ -26,15 +26,51 @@
#include <QLabel>
#include <QPushButton>
#include <QSpacerItem>
+#include <QMessageBox>
+#include <QCheckBox>
+#include <QFileDialog>
connect_widget::connect_widget(QWidget *parent) : QWidget(parent)
{
edit_host = new QLineEdit(this), edit_port = new QLineEdit(this), edit_passwd = new QLineEdit(this);
+ edit_port->setInputMask("D0000");
+ edit_port->setText("1");
+ edit_passwd->setEchoMode(QLineEdit::Password);
lbl_host = new QLabel(tr("host") + ":", this);
lbl_port = new QLabel(tr("port") + ":", this);
lbl_passwd = new QLabel(tr("password") + ":", this);
+
+ chk_ssl = new QCheckBox(tr("Enable encryption"), this);
+
+ lbl_ssl_ca = new QLabel(tr("ca cert"), this);
+ lbl_ssl_ca->setEnabled(false);
+ edit_ssl_ca = new QLineEdit(this);
+ edit_ssl_ca->setEnabled(false);
+ btn_set_ssl_ca = new QPushButton(tr("Browse"), this);
+ btn_set_ssl_ca->setEnabled(false);
+ connect(btn_set_ssl_ca, SIGNAL(clicked(bool)), this, SLOT(select_ssl_ca()));
+
+ lbl_ssl_crt = new QLabel(tr("client cert"), this);
+ lbl_ssl_crt->setEnabled(false);
+ edit_ssl_crt = new QLineEdit(this);
+ edit_ssl_crt->setEnabled(false);
+ btn_set_ssl_crt = new QPushButton(tr("Browse"), this);
+ btn_set_ssl_crt->setEnabled(false);
+ connect(btn_set_ssl_crt, SIGNAL(clicked(bool)), this, SLOT(select_ssl_crt()));
+
+ lbl_ssl_key = new QLabel(tr("client key"), this);
+ lbl_ssl_key->setEnabled(false);
+ edit_ssl_key = new QLineEdit(this);
+ edit_ssl_key->setEnabled(false);
+ btn_set_ssl_key = new QPushButton(tr("Browse"), this);
+ btn_set_ssl_key->setEnabled(false);
+ connect(btn_set_ssl_key, SIGNAL(clicked(bool)), this, SLOT(select_ssl_key()));
+
+
btn_connect = new QPushButton(tr("Connect"), this);
+ btn_connect->setSizePolicy(QSizePolicy::Minimum, QSizePolicy::Minimum);
btn_close = new QPushButton(tr("Close"), this);
+ btn_close->setSizePolicy(QSizePolicy::Minimum, QSizePolicy::Minimum);
edit_host->setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Minimum);
edit_port->setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Minimum);
edit_passwd->setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Minimum);
@@ -45,24 +81,103 @@ connect_widget::connect_widget(QWidget *parent) : QWidget(parent)
elements_grid->addWidget(edit_port, 0, 3);
elements_grid->addWidget(lbl_passwd, 1, 0);
elements_grid->addWidget(edit_passwd, 1, 1, 1, 2);
+ elements_grid->addWidget(chk_ssl, 2, 0, 1, 4);
+ elements_grid->addWidget(lbl_ssl_ca, 3, 0);
+ elements_grid->addWidget(edit_ssl_ca, 3, 1, 1, 2);
+ elements_grid->addWidget(btn_set_ssl_ca, 3, 3);
+ elements_grid->addWidget(lbl_ssl_crt, 4, 0);
+ elements_grid->addWidget(edit_ssl_crt, 4, 1, 1, 2);
+ elements_grid->addWidget(btn_set_ssl_crt, 4, 3);
+ elements_grid->addWidget(lbl_ssl_key, 5, 0);
+ elements_grid->addWidget(edit_ssl_key, 5, 1, 1, 2);
+ elements_grid->addWidget(btn_set_ssl_key, 5, 3);
+
+
spacer_h = new QSpacerItem(1, 1, QSizePolicy::MinimumExpanding, QSizePolicy::MinimumExpanding);
- elements_grid->addItem(spacer_h, 2, 0, 1, 4);
- elements_grid->addWidget(btn_connect, 3, 0, 1, 2);
- elements_grid->addWidget(btn_close, 3, 2, 1, 2);
+ elements_grid->addItem(spacer_h, 6, 0, 1, 4);
+ elements_grid->addWidget(btn_connect, 7, 0);
+ elements_grid->addWidget(btn_close, 7, 3);
+ elements_grid->setColumnStretch(1, 1);
connect(btn_connect, SIGNAL(clicked(bool)), this, SLOT(connect_clicked()));
+ connect(btn_close, SIGNAL(clicked(bool)), this, SLOT(close()));
+ connect(chk_ssl, SIGNAL(stateChanged(int)), this, SLOT(chk_ssl_state_changed(int)));
}
connect_widget::~connect_widget()
{
- edit_host->deleteLater();
- edit_port->deleteLater();
- elements_grid->deleteLater();
+ //TODO: delete all widgets
}
void connect_widget::connect_clicked()
{
//TODO: check entered values
+ if(edit_host->text().isEmpty())
+ {
+ QMessageBox msg;
+ msg.setText(tr("host must be entered"));
+ msg.exec();
+ return;
+ }
QString host = edit_host->text(), pass = edit_passwd->text();
- emit client_connect(host, pass, edit_port->text().toInt());
+ if(chk_ssl->checkState())
+ {
+ QString ssl_ca = edit_ssl_ca->text(), ssl_crt = edit_ssl_crt->text(), ssl_key = edit_ssl_key->text();
+ //TODO: validate file path's (existense, access rights, e.t.c.)
+ emit client_connect_ssl(host, pass, edit_port->text().toInt(), ssl_ca, ssl_crt, ssl_key);
+ }
+ else
+ emit client_connect(host, pass, edit_port->text().toInt());
+ close();
+}
+
+void connect_widget::chk_ssl_state_changed(int state)
+{
+ switch(state)
+ {
+ case 0: //unchecked
+ {
+ lbl_ssl_ca->setEnabled(false);
+ lbl_ssl_crt->setEnabled(false);
+ lbl_ssl_key->setEnabled(false);
+ edit_ssl_ca->setEnabled(false);
+ edit_ssl_crt->setEnabled(false);
+ edit_ssl_key->setEnabled(false);
+ btn_set_ssl_ca->setEnabled(false);
+ btn_set_ssl_key->setEnabled(false);
+ btn_set_ssl_crt->setEnabled(false);
+ }
+ break;
+ default: //checked
+ {
+ lbl_ssl_ca->setEnabled(true);
+ lbl_ssl_crt->setEnabled(true);
+ lbl_ssl_key->setEnabled(true);
+ edit_ssl_ca->setEnabled(true);
+ edit_ssl_crt->setEnabled(true);
+ edit_ssl_key->setEnabled(true);
+ btn_set_ssl_ca->setEnabled(true);
+ btn_set_ssl_key->setEnabled(true);
+ btn_set_ssl_crt->setEnabled(true);
+ }
+ break;
+ }
+}
+void connect_widget::select_ssl_ca()
+{
+ QString tmp = QFileDialog::getOpenFileName(this, tr("select ca cert"));
+ edit_ssl_ca->setText(tmp);
+}
+
+void connect_widget::select_ssl_crt()
+{
+ QString tmp = QFileDialog::getOpenFileName(this, tr("select client cert"));
+ edit_ssl_crt->setText(tmp);
}
+
+void connect_widget::select_ssl_key()
+{
+ QString tmp = QFileDialog::getOpenFileName(this, tr("select client key"));
+ edit_ssl_key->setText(tmp);
+}
+