diff options
Diffstat (limited to 'client-qt/udm-client-qt/connect_widget.cpp')
-rw-r--r-- | client-qt/udm-client-qt/connect_widget.cpp | 129 |
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); +} + |