From bf799ce061b820e9b0affba5d9ca53a14c16ed45 Mon Sep 17 00:00:00 2001 From: arcan1s Date: Thu, 10 Jul 2014 10:30:26 +0400 Subject: [PATCH] add contextual actions to wifi tab --- sources/gui/src/mainwindow.cpp | 36 ++++++++++++++++++++++++++++++++++ sources/gui/src/mainwindow.h | 1 + sources/gui/src/mainwindow.ui | 3 +++ 3 files changed, 40 insertions(+) diff --git a/sources/gui/src/mainwindow.cpp b/sources/gui/src/mainwindow.cpp index 1b88ddc..df0a17f 100644 --- a/sources/gui/src/mainwindow.cpp +++ b/sources/gui/src/mainwindow.cpp @@ -181,6 +181,7 @@ void MainWindow::createActions() connect(ui->pushButton_wifiStart, SIGNAL(clicked(bool)), this, SLOT(wifiTabStart())); connect(ui->tableWidget_wifi, SIGNAL(itemActivated(QTableWidgetItem *)), this, SLOT(wifiTabStart())); connect(ui->tableWidget_wifi, SIGNAL(currentItemChanged(QTableWidgetItem *, QTableWidgetItem *)), this, SLOT(wifiTabRefreshButtons(QTableWidgetItem *, QTableWidgetItem *))); + connect(ui->tableWidget_wifi, SIGNAL(customContextMenuRequested(QPoint)), this, SLOT(wifiTabContextualMenu(QPoint))); } @@ -657,6 +658,7 @@ void MainWindow::profileTabClear() ipWid->clear(); bridgeWid->clear(); ethernetWid->clear(); + macvlanWid->clear(); mobileWid->clear(); pppoeWid->clear(); tunnelWid->clear(); @@ -952,6 +954,40 @@ void MainWindow::profileTabLoadProfile() // wifi tab slots +void MainWindow::wifiTabContextualMenu(const QPoint &pos) +{ + if (debug) qDebug() << "[MainWindow]" << "[wifiTabContextualMenu]"; + + // create menu + QMenu menu(this); + QAction *refreshTable = menu.addAction(QApplication::translate("MainWindow", "Refresh")); + menu.addSeparator(); + QAction *startWifi = menu.addAction(QApplication::translate("MainWindow", "Start WiFi")); + + // set text + QString item = ui->tableWidget_wifi->item(ui->tableWidget_wifi->currentItem()->row(), 1)->text(); + if (checkState(QString("exists"), item)) { + if (!checkState(QString("inactive"), item)) + startWifi->setText(QApplication::translate("MainWindow", "Stop WiFi")); + else + startWifi->setText(QApplication::translate("MainWindow", "Start WiFi")); + } + else + startWifi->setText(QApplication::translate("MainWindow", "Start WiFi")); + + // actions + QAction *action = menu.exec(ui->tableWidget_main->viewport()->mapToGlobal(pos)); + if (action == refreshTable) { + if (debug) qDebug() << "[MainWindow]" << "[wifiTabContextualMenu]" << "Refresh WiFi"; + updateWifiTab(); + } + else if (action == startWifi) { + if (debug) qDebug() << "[MainWindow]" << "[wifiTabContextualMenu]" << "Start WiFi"; + wifiTabStart(); + } +} + + void MainWindow::wifiTabSetEnabled(const bool state) { if (state) { diff --git a/sources/gui/src/mainwindow.h b/sources/gui/src/mainwindow.h index 062c9b1..a076167 100644 --- a/sources/gui/src/mainwindow.h +++ b/sources/gui/src/mainwindow.h @@ -83,6 +83,7 @@ private slots: void profileTabCreateProfile(); void profileTabLoadProfile(); // wifi tab slots + void wifiTabContextualMenu(const QPoint &pos); void wifiTabSetEnabled(const bool state); void wifiTabStart(); void wifiTabRefreshButtons(QTableWidgetItem *current, QTableWidgetItem *previous); diff --git a/sources/gui/src/mainwindow.ui b/sources/gui/src/mainwindow.ui index 37aeb7b..c94ba33 100644 --- a/sources/gui/src/mainwindow.ui +++ b/sources/gui/src/mainwindow.ui @@ -274,6 +274,9 @@ + + Qt::CustomContextMenu + QAbstractItemView::NoEditTriggers