From f0c79a4dabd6f75d3a2542f05716d3a1c433b3ff Mon Sep 17 00:00:00 2001 From: arcan1s Date: Tue, 18 Nov 2014 11:54:23 +0300 Subject: [PATCH] implement contextual menu to listWidgets --- sources/awesome-widget/advanced.ui | 14 ++++--- sources/awesome-widget/awesome-widget.h | 2 + sources/awesome-widget/configuration.cpp | 48 ++++++++++++++++++++++++ sources/awesome-widget/deconfig.ui | 10 +++-- 4 files changed, 66 insertions(+), 8 deletions(-) diff --git a/sources/awesome-widget/advanced.ui b/sources/awesome-widget/advanced.ui index 43b3018..1b298e4 100644 --- a/sources/awesome-widget/advanced.ui +++ b/sources/awesome-widget/advanced.ui @@ -7,7 +7,7 @@ 0 0 700 - 592 + 590 @@ -41,9 +41,9 @@ 0 - -225 - 677 - 801 + -239 + 675 + 813 @@ -469,7 +469,11 @@ $m - uptime minutes without zero - + + + Qt::CustomContextMenu + + diff --git a/sources/awesome-widget/awesome-widget.h b/sources/awesome-widget/awesome-widget.h index 977957a..98b9423 100644 --- a/sources/awesome-widget/awesome-widget.h +++ b/sources/awesome-widget/awesome-widget.h @@ -82,6 +82,8 @@ private slots: void addBar(); void addCustomScript(); void addNewPkgCommand(QTableWidgetItem *item); + void contextMenuBars(const QPoint pos); + void contextMenuCustomCommand(const QPoint pos); void contextMenuPkgCommand(const QPoint pos); void editBar(QListWidgetItem *item); void editCustomCommand(QListWidgetItem *item); diff --git a/sources/awesome-widget/configuration.cpp b/sources/awesome-widget/configuration.cpp index 020b564..eb5be8f 100644 --- a/sources/awesome-widget/configuration.cpp +++ b/sources/awesome-widget/configuration.cpp @@ -451,8 +451,12 @@ void AwesomeWidget::createConfigurationInterface(KConfigDialog *parent) this, SLOT(editTempItem(QListWidgetItem *))); connect(uiAdvancedConfig.listWidget_bars, SIGNAL(itemActivated(QListWidgetItem *)), this, SLOT(editBar(QListWidgetItem *))); + connect(uiAdvancedConfig.listWidget_bars, SIGNAL(customContextMenuRequested(QPoint)), + this, SLOT(contextMenuBars(QPoint))); connect(uiDEConfig.listWidget_custom, SIGNAL(itemActivated(QListWidgetItem *)), this, SLOT(editCustomCommand(QListWidgetItem *))); + connect(uiDEConfig.listWidget_custom, SIGNAL(customContextMenuRequested(QPoint)), + this, SLOT(contextMenuCustomCommand(QPoint))); connect(uiDEConfig.tableWidget_pkgCommand, SIGNAL(itemChanged(QTableWidgetItem *)), this, SLOT(addNewPkgCommand(QTableWidgetItem *))); connect(uiDEConfig.tableWidget_pkgCommand, SIGNAL(customContextMenuRequested(QPoint)), @@ -763,6 +767,50 @@ void AwesomeWidget::addNewPkgCommand(QTableWidgetItem *item) } +void AwesomeWidget::contextMenuBars(const QPoint pos) +{ + if (debug) qDebug() << PDEBUG; + if (uiAdvancedConfig.listWidget_bars->currentItem() == 0) return; + + QMenu menu(uiAdvancedConfig.listWidget_bars); + QAction *edit = menu.addAction(QIcon::fromTheme("document-edit"), i18n("Edit")); + QAction *remove = menu.addAction(QIcon::fromTheme("edit-delete"), i18n("Remove")); + QAction *action = menu.exec(uiAdvancedConfig.listWidget_bars->viewport()->mapToGlobal(pos)); + if (action == edit) + editBar(uiAdvancedConfig.listWidget_bars->currentItem()); + else if (action == remove) + for (int i=0; igetFileName() != uiAdvancedConfig.listWidget_bars->currentItem()->text()) + continue; + graphicalItems[i]->tryDelete(); + graphicalItems.takeAt(i); + uiAdvancedConfig.listWidget_bars->takeItem(uiAdvancedConfig.listWidget_bars->currentRow()); + break; + } +} + + +void AwesomeWidget::contextMenuCustomCommand(const QPoint pos) +{ + if (debug) qDebug() << PDEBUG; + if (uiDEConfig.listWidget_custom->currentItem() == 0) return; + + QMenu menu(uiDEConfig.listWidget_custom); + QAction *edit = menu.addAction(QIcon::fromTheme("document-edit"), i18n("Edit")); + QAction *remove = menu.addAction(QIcon::fromTheme("edit-delete"), i18n("Remove")); + QAction *action = menu.exec(uiDEConfig.listWidget_custom->viewport()->mapToGlobal(pos)); + if (action == edit) + editCustomCommand(uiDEConfig.listWidget_custom->currentItem()); + else if (action == remove) { + QStringList dirs = KGlobal::dirs()->findDirs("data", "plasma_engine_extsysmon/scripts"); + ExtScript *script = new ExtScript(0, uiDEConfig.listWidget_custom->currentItem()->text(), dirs, debug); + script->tryDelete(); + delete script; + uiDEConfig.listWidget_custom->takeItem(uiDEConfig.listWidget_custom->currentRow()); + } +} + + void AwesomeWidget::contextMenuPkgCommand(const QPoint pos) { if (debug) qDebug() << PDEBUG; diff --git a/sources/awesome-widget/deconfig.ui b/sources/awesome-widget/deconfig.ui index d930a94..177e509 100644 --- a/sources/awesome-widget/deconfig.ui +++ b/sources/awesome-widget/deconfig.ui @@ -7,7 +7,7 @@ 0 0 700 - 584 + 582 @@ -43,7 +43,7 @@ 0 0 684 - 568 + 566 @@ -507,7 +507,11 @@ del - remove item - + + + Qt::CustomContextMenu + +