diff options
author | Gluzskiy Alexandr <sss@sss.chaoslab.ru> | 2015-08-19 11:46:18 +0300 |
---|---|---|
committer | Gluzskiy Alexandr <sss@sss.chaoslab.ru> | 2015-08-19 11:46:18 +0300 |
commit | c83c19a7d93ee77617c6e47bf0700346545b4611 (patch) | |
tree | 7c4413e8a6e54be1700b1439819316765b64abac | |
parent | 8c24fe5997591ac4925736d68636b98edf021f43 (diff) |
client-qt:
basic connection state display
initial server message handler
-rw-r--r-- | client-qt/udm-client-qt/client_session.cpp | 8 | ||||
-rw-r--r-- | client-qt/udm-client-qt/main.cpp | 6 | ||||
-rw-r--r-- | client-qt/udm-client-qt/udm_main.cpp | 54 | ||||
-rw-r--r-- | client-qt/udm-client-qt/udm_main.h | 8 | ||||
-rw-r--r-- | server/udm-server.cbp | 1 |
5 files changed, 74 insertions, 3 deletions
diff --git a/client-qt/udm-client-qt/client_session.cpp b/client-qt/udm-client-qt/client_session.cpp index 2069b73..45e93b9 100644 --- a/client-qt/udm-client-qt/client_session.cpp +++ b/client-qt/udm-client-qt/client_session.cpp @@ -24,6 +24,10 @@ #include <boost/log/trivial.hpp> #include <openssl/sha.h> +#include <QMetaType> +Q_DECLARE_METATYPE(server_msg); +int shit = qRegisterMetaType <server_msg> ("server_msg"); + std::shared_ptr<char*> pack_data(const std::string &buf, int *size_) { BOOST_LOG_TRIVIAL(debug)<<__FILE__<<":"<<__LINE__<<"\t"<<__func__; @@ -209,13 +213,13 @@ void client_session::handle_connect(const boost::system::error_code &e) if(e) { //TODO: settings for reconnect count and timeout - emit client_connected(false, QString::fromStdString(e.message())); + emit client_connected(false, QString::fromUtf8(e.message().c_str())); BOOST_LOG_TRIVIAL(error)<<__FILE__<<":"<<__LINE__<<"\t"<<typeid(this).name()<<"::"<<__func__<<"\terror: "<<e.message(); delete this; //suicide } else { - emit client_connected(true, QString::fromStdString(e.message())); + emit client_connected(true, QString::fromUtf8(e.message().c_str())); //TODO: something better ? {// for now hust send auth request message client_msg msg; diff --git a/client-qt/udm-client-qt/main.cpp b/client-qt/udm-client-qt/main.cpp index 357777e..604bdae 100644 --- a/client-qt/udm-client-qt/main.cpp +++ b/client-qt/udm-client-qt/main.cpp @@ -21,10 +21,16 @@ #include "udm_main.h" #include <QApplication> +#include <QTranslator> + int main(int argc, char *argv[]) { + //TODO: load translations + QApplication a(argc, argv); + QTranslator udm_trans; + a.installTranslator(&udm_trans); udm_main w; w.show(); diff --git a/client-qt/udm-client-qt/udm_main.cpp b/client-qt/udm-client-qt/udm_main.cpp index f85dc5d..0089a45 100644 --- a/client-qt/udm-client-qt/udm_main.cpp +++ b/client-qt/udm-client-qt/udm_main.cpp @@ -22,10 +22,14 @@ #include "udm_main.h" #include <QMenuBar> #include <QThread> +#include <QMessageBox> +#include <QStatusBar> +#include <QLabel> #include "connect_widget.h" #include "client_session.h" + udm_main::udm_main(QWidget *parent) : QMainWindow(parent) { @@ -34,6 +38,9 @@ udm_main::udm_main(QWidget *parent) connect(action_connect, SIGNAL(triggered()), this, SLOT(show_connect_widget())); auto action_exit = menu_main->addAction(tr("Exit")); connect(action_exit, SIGNAL(triggered(bool)), this, SLOT(close())); //TODO: something better + lbl_state = new QLabel; + lbl_state->setText(tr("State") + ": " + tr("Offline")); + this->statusBar()->addPermanentWidget(lbl_state); } udm_main::~udm_main() @@ -55,6 +62,8 @@ void udm_main::client_pre_connect_init() thread_client_session = new QThread(this); io_service_ = new boost::asio::io_service; session = new client_session(0, io_service_); //parent must be 0 here + connect(session, SIGNAL(server_message_received(server_msg)), this, SLOT(server_message_received(server_msg))); + connect(session, SIGNAL(client_connected(bool,QString)), this, SLOT(client_connected(bool,QString))); } void udm_main::client_connect_finalize() { @@ -78,3 +87,48 @@ void udm_main::client_connect_ssl(QString &host, QString &password, int port, QS client_connect_finalize(); emit connect_signal_ssl(host, password, port, ssl_ca, ssl_crt, ssl_key); } + +void udm_main::server_message_received(server_msg msg) +{ + switch(msg.type()) + { + case SERVER_MSG_TYPE::SERVER_AUTH_REPLY: + { + if(msg.auth_reply().status()) + { + auth_token = msg.auth_reply().auth_token().c_str(); + //TODO: update client status + lbl_state->setText(tr("State") + ": " + tr("Connected") + ", " + tr("Authenticated")); + } + else + { + QMessageBox msg_box; + msg_box.setText(tr("Authentication failed with error:") + "\n" + msg.auth_reply().error_description().c_str()); + msg_box.exec(); + lbl_state->setText(tr("State") + ": " + tr("auth error")); + } + + } + break; + default: + break; + } +} + +void udm_main::client_connected(bool success, QString error_text) +{ + if(!success) + { + QMessageBox msg; + msg.setText(tr("client connection error with error:") + error_text); + msg.exec(); + lbl_state->setText(tr("State") + ": " + tr("Connection error")); + } + else + { + lbl_state->setText(tr("State") + ": " + tr("Connected")); + } +/* QMessageBox msg; + msg.setText(success?"client connected with message:":"client connection error with error:" + error_text); + msg.exec(); */ +} diff --git a/client-qt/udm-client-qt/udm_main.h b/client-qt/udm-client-qt/udm_main.h index 2964e55..8861403 100644 --- a/client-qt/udm-client-qt/udm_main.h +++ b/client-qt/udm-client-qt/udm_main.h @@ -25,7 +25,10 @@ #include <QMainWindow> +#include "../../protocol/udm.pb.h" + class client_session; +class QLabel; namespace boost { namespace asio { @@ -47,6 +50,8 @@ public slots: void show_connect_widget(); void client_connect(QString &host, QString &password, int port); void client_connect_ssl(QString &host, QString &password, int port, QString &ssl_ca, QString &ssl_crt, QString &ssl_key); + void server_message_received(server_msg msg); + void client_connected(bool success, QString error_text); signals: void connect_signal(QString host, QString password, int port); void connect_signal_ssl(QString host, QString password, int port, QString ssl_ca, QString ssl_crt, QString ssl_key); @@ -56,7 +61,8 @@ private: QThread *thread_client_session; client_session *session; boost::asio::io_service *io_service_; - + QString auth_token; + QLabel *lbl_state; }; #endif // UDM_MAIN_H diff --git a/server/udm-server.cbp b/server/udm-server.cbp index 159c144..0d79409 100644 --- a/server/udm-server.cbp +++ b/server/udm-server.cbp @@ -11,6 +11,7 @@ <Option object_output="obj/Debug/" /> <Option type="1" /> <Option compiler="gcc" /> + <Option parameters="--run" /> <Compiler> <Add option="-g" /> <Add directory="include" /> |