diff options
Diffstat (limited to 'client-qt/udm-client-qt/udm_main.cpp')
-rw-r--r-- | client-qt/udm-client-qt/udm_main.cpp | 87 |
1 files changed, 84 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(); } |