summaryrefslogtreecommitdiff
path: root/client-qt
diff options
context:
space:
mode:
Diffstat (limited to 'client-qt')
-rw-r--r--client-qt/udm-client-qt/udm_main.cpp87
-rw-r--r--client-qt/udm-client-qt/udm_main.h12
2 files changed, 96 insertions, 3 deletions
diff --git a/client-qt/udm-client-qt/udm_main.cpp b/client-qt/udm-client-qt/udm_main.cpp
index b822163..62b8195 100644
--- a/client-qt/udm-client-qt/udm_main.cpp
+++ b/client-qt/udm-client-qt/udm_main.cpp
@@ -33,6 +33,7 @@
#include <QStackedLayout>
#include <QPushButton>
#include <QToolBar>
+#include <QMenu>
#include "connect_widget.h"
#include "client_session.h"
@@ -61,12 +62,17 @@ udm_main::udm_main(QWidget *parent)
tbl_downloads->setUpdatesEnabled(true);
mdl_downloads = new downloads_model(downloads);
tbl_downloads->setModel(mdl_downloads);
+ tbl_downloads->setContextMenuPolicy(Qt::CustomContextMenu);
tbl_downloads->setSelectionBehavior(QAbstractItemView::SelectRows);
tbl_downloads->setSortingEnabled(true);
tbl_downloads->horizontalHeader()->setHighlightSections(false);
tbl_downloads->horizontalHeader()->setMovable(true);
tbl_downloads->horizontalHeader()->setDefaultAlignment(Qt::AlignLeft);
tbl_downloads->setHorizontalScrollMode(QAbstractItemView::ScrollPerPixel);
+ connect(tbl_downloads, SIGNAL(customContextMenuRequested(QPoint)), SLOT(downloads_menu(QPoint)));
+ connect(tbl_downloads->selectionModel(), SIGNAL(selectionChanged(QItemSelection,QItemSelection)), this, SLOT(downloads_selection_changed(QItemSelection,QItemSelection)));
+
+ create_menu();
tree_filters = new QTreeView;
mdl_filters = new filters_model;
@@ -98,6 +104,81 @@ udm_main::udm_main(QWidget *parent)
create_buttons();
}
+void udm_main::create_menu()
+{
+ download_menu = new QMenu;
+ QAction *a = download_menu->addAction(tr("Start"));
+ connect(a, SIGNAL(triggered(bool)), this, SLOT(download_start()));
+ a = download_menu->addAction(tr("Stop"));
+ connect(a, SIGNAL(triggered(bool)), this, SLOT(download_stop()));
+ a = download_menu->addAction(tr("Delete"));
+ connect(a, SIGNAL(triggered(bool)), this, SLOT(download_delete()));
+ //TODO: dynamic menu
+}
+
+void udm_main::downloads_menu(const QPoint &/*pos*/)
+{
+ download_menu->popup(QCursor::pos());
+}
+
+
+void udm_main::download_start()
+{
+ client_msg msg;
+ msg.set_auth_token(auth_token);
+ for(auto i : tbl_downloads->selectionModel()->selectedRows())
+ {
+ msg.set_type(CLIENT_MSG_TYPE::CLIENT_DOWNLOAD_START);
+ client_download_start_request *r = msg.add_download_start_request();
+ r->set_download_id(downloads[i.row()].id());
+ }
+ session->send_message(msg);
+}
+
+void udm_main::download_stop()
+{
+ client_msg msg;
+ msg.set_auth_token(auth_token);
+ for(auto i : tbl_downloads->selectionModel()->selectedRows())
+ {
+ msg.set_type(CLIENT_MSG_TYPE::CLIENT_DOWNLOAD_STOP);
+ client_download_stop_request *r = msg.add_download_stop_request();
+ r->set_download_id(downloads[i.row()].id());
+ }
+ session->send_message(msg);
+}
+
+void udm_main::download_delete()
+{
+ client_msg msg;
+ msg.set_auth_token(auth_token);
+ for(auto i : tbl_downloads->selectionModel()->selectedRows())
+ {
+ msg.set_type(CLIENT_MSG_TYPE::CLIENT_DOWNLOAD_DELETE);
+ client_download_delete_request *r = msg.add_download_delete_request();
+ r->set_download_id(downloads[i.row()].id());
+ }
+ session->send_message(msg);
+}
+
+void udm_main::downloads_selection_changed(QItemSelection s, QItemSelection)
+{
+ if(s.size())
+ {
+ btn_start->setEnabled(true);
+ btn_stop->setEnabled(true);
+ btn_del->setEnabled(true);
+ }
+ else
+ {
+ btn_start->setEnabled(false);
+ btn_stop->setEnabled(false);
+ btn_del->setEnabled(false);
+ }
+
+}
+
+
udm_main::~udm_main()
{
if(thread_client_session)
@@ -296,12 +377,12 @@ void udm_main::create_buttons()
void udm_main::btn_start_clicked()
{
-
+ download_start();
}
void udm_main::btn_stop_clicked()
{
-
+ download_stop();
}
void udm_main::btn_add_clicked()
@@ -332,7 +413,7 @@ void udm_main::got_download_settings(std::string module_name, std::map<int, std:
void udm_main::btn_del_clicked()
{
-
+ download_delete();
}
diff --git a/client-qt/udm-client-qt/udm_main.h b/client-qt/udm-client-qt/udm_main.h
index d3e07be..284c4e5 100644
--- a/client-qt/udm-client-qt/udm_main.h
+++ b/client-qt/udm-client-qt/udm_main.h
@@ -25,6 +25,7 @@
#include <QMainWindow>
+#include <QItemSelection>
#include "../../protocol/udm.pb.h"
class client_session;
@@ -37,6 +38,8 @@ class filters_model;
class QSplitter;
class QToolBar;
class QPushButton;
+class QMenu;
+class QAction;
namespace boost {
namespace asio {
@@ -70,6 +73,12 @@ protected slots:
void btn_add_clicked();
void btn_del_clicked();
+ void download_start();
+ void download_stop();
+ void download_delete();
+ void downloads_menu(const QPoint&);
+ void downloads_selection_changed(QItemSelection, QItemSelection);
+
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);
@@ -78,6 +87,7 @@ private:
void client_pre_connect_init();
void client_connect_finalize();
void create_buttons();
+ void create_menu();
QThread *thread_client_session;
client_session *session;
boost::asio::io_service *io_service_;
@@ -88,6 +98,8 @@ private:
QTabWidget *tabs_info;
QToolBar *button_bar;
QPushButton *btn_start, *btn_stop, *btn_del, *btn_add;
+ QMenu *download_menu;
+ std::list<QAction*> download_menu_actions;
downloads_model *mdl_downloads;
filters_model *mdl_filters;
QSplitter *spl_hor, *spl_vert;