summaryrefslogtreecommitdiff
path: root/client-qt/udm-client-qt/udm_main.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'client-qt/udm-client-qt/udm_main.cpp')
-rw-r--r--client-qt/udm-client-qt/udm_main.cpp87
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();
}