From a5c352bc0697bca11585c1a58bc8878aca7b67ce Mon Sep 17 00:00:00 2001 From: arcan1s Date: Tue, 2 Sep 2014 03:56:34 +0400 Subject: [PATCH] add contextual actions fix icons --- sources/awesome-widget/awesome-widget.cpp | 73 +++++++++++++++++++++++ sources/awesome-widget/awesome-widget.h | 7 +++ sources/awesome-widget/configuration.cpp | 4 +- sources/awesome-widget/reinit.cpp | 8 +++ 4 files changed, 90 insertions(+), 2 deletions(-) diff --git a/sources/awesome-widget/awesome-widget.cpp b/sources/awesome-widget/awesome-widget.cpp index 1a5a96b..34ef80a 100644 --- a/sources/awesome-widget/awesome-widget.cpp +++ b/sources/awesome-widget/awesome-widget.cpp @@ -17,7 +17,10 @@ #include "awesome-widget.h" +#include #include +#include +#include #include #include #include @@ -53,6 +56,35 @@ AwesomeWidget::AwesomeWidget(QObject *parent, const QVariantList &args) AwesomeWidget::~AwesomeWidget() { + if (debug) qDebug() << PDEBUG; +} + + +QList AwesomeWidget::contextualActions() +{ + if (debug) qDebug() << PDEBUG; + + return contextMenu; +} + + +void AwesomeWidget::createActions() +{ + if (debug) qDebug() << PDEBUG; + + contextMenu.clear(); + contextMenu.append(new QAction(QIcon::fromTheme(QString("utilities-system-monitor")), + i18n("Run ksysguard"), this)); + connect(contextMenu[0], SIGNAL(triggered(bool)), this, SLOT(showKsysguard())); + contextMenu.append(new QAction(QIcon::fromTheme(QString("text-x-readme")), + i18n("Show README"), this)); + connect(contextMenu[1], SIGNAL(triggered(bool)), this, SLOT(showReadme())); + contextMenu.append(new QAction(QIcon::fromTheme(QString("stock-refresh")), + i18n("Update text"), this)); + connect(contextMenu[2], SIGNAL(triggered(bool)), extsysmonEngine, SLOT(updateAllSources())); + connect(contextMenu[2], SIGNAL(triggered(bool)), sysmonEngine, SLOT(updateAllSources())); + connect(contextMenu[2], SIGNAL(triggered(bool)), timeEngine, SLOT(updateAllSources())); + connect(contextMenu[2], SIGNAL(triggered(bool)), this, SLOT(updateNetworkDevice())); } @@ -162,6 +194,7 @@ void AwesomeWidget::init() Plasma::ToolTipManager::self()->setContent(this, toolTip); // body + createActions(); mainLayout = new QGraphicsLinearLayout(); mainLayout->setContentsMargins(1, 1, 1, 1); mainLayout->setOrientation(Qt::Horizontal); @@ -308,4 +341,44 @@ QStringList AwesomeWidget::getKeys() } +void AwesomeWidget::showKsysguard() +{ + if (debug) qDebug() << PDEBUG; + + QString cmd = QString("ksysguard"); + if (debug) qDebug() << PDEBUG << ":" << "cmd" << cmd; + TaskResult process = runTask(cmd); + if (debug) qDebug() << PDEBUG << ":" << "Cmd returns" << process.exitCode; + if (process.exitCode != 0) + if (debug) qDebug() << PDEBUG << ":" << "Error" << process.error; +} + + +void AwesomeWidget::showReadme() +{ + if (debug) qDebug() << PDEBUG; + + QString kdeHome = KGlobal::dirs()->localkdedir(); + QString dirPath; + if (QDir(QString("/usr/share/awesome-widgets")).exists()) + dirPath = QString("/usr/share/awesome-widgets"); + else if (QDir(kdeHome + QString("/share/awesome-widgets")).exists()) + dirPath = kdeHome + QString("/share/awesome-widgets"); + else return; + QString locale = QLocale::system().name(); + QString filePath; + if (QFileInfo(dirPath + locale + QString(".html")).exists()) + filePath = dirPath + locale + QString(".html"); + else { + locale = locale.split(QChar('_'))[0]; + if (QFileInfo(dirPath + locale + QString(".html")).exists()) + filePath = dirPath + locale + QString(".html"); + else if (QFileInfo(dirPath + QString("en.html")).exists()) + filePath = dirPath + QString("en.html"); + else return; + } + QDesktopServices::openUrl(filePath); +} + + K_EXPORT_PLASMA_APPLET(ptm-awesome-widget, AwesomeWidget) diff --git a/sources/awesome-widget/awesome-widget.h b/sources/awesome-widget/awesome-widget.h index 19fa94c..602a330 100644 --- a/sources/awesome-widget/awesome-widget.h +++ b/sources/awesome-widget/awesome-widget.h @@ -52,6 +52,9 @@ public: QMap updateDataEngineConfiguration(const QMap rawConfig); public slots: + // contextual actions + void showKsysguard(); + void showReadme(); // dataengine void addDiskDevice(const QString source); void connectToEngine(); @@ -61,6 +64,7 @@ public slots: void configAccepted(); void configChanged(); // update events + void updateNetworkDevice(); void updateText(bool clear = false); void updateTooltip(); @@ -77,10 +81,12 @@ private slots: void editTempItem(QListWidgetItem *item); protected: + QList contextualActions(); void createConfigurationInterface(KConfigDialog *parent); private: // functions + void createActions(); void initValues(); QStringList findKeys(); QStringList getKeys(); @@ -88,6 +94,7 @@ private: QGraphicsLinearLayout *mainLayout; CustomLabel *textLabel; QTimer *timer; + QList contextMenu; // tooltip Plasma::ToolTipContent toolTip; QGraphicsScene *toolTipScene; diff --git a/sources/awesome-widget/configuration.cpp b/sources/awesome-widget/configuration.cpp index d876c71..7b36208 100644 --- a/sources/awesome-widget/configuration.cpp +++ b/sources/awesome-widget/configuration.cpp @@ -620,7 +620,7 @@ void AwesomeWidget::contextMenuCustomCommand(const QPoint pos) if (uiDEConfig.tableWidget_customCommand->currentItem() == 0) return; QMenu menu(uiDEConfig.tableWidget_customCommand); - QAction *remove = menu.addAction(QIcon("edit-delete"), i18n("Remove")); + QAction *remove = menu.addAction(QIcon::fromTheme("edit-delete"), i18n("Remove")); QAction *action = menu.exec(uiDEConfig.tableWidget_customCommand->viewport()->mapToGlobal(pos)); if (action == remove) uiDEConfig.tableWidget_customCommand->removeRow( @@ -634,7 +634,7 @@ void AwesomeWidget::contextMenuPkgCommand(const QPoint pos) if (uiDEConfig.tableWidget_pkgCommand->currentItem() == 0) return; QMenu menu(uiDEConfig.tableWidget_pkgCommand); - QAction *remove = menu.addAction(QIcon("edit-delete"), i18n("Remove")); + QAction *remove = menu.addAction(QIcon::fromTheme("edit-delete"), i18n("Remove")); QAction *action = menu.exec(uiDEConfig.tableWidget_pkgCommand->viewport()->mapToGlobal(pos)); if (action == remove) uiDEConfig.tableWidget_pkgCommand->removeRow( diff --git a/sources/awesome-widget/reinit.cpp b/sources/awesome-widget/reinit.cpp index 8a8cd72..27435ca 100644 --- a/sources/awesome-widget/reinit.cpp +++ b/sources/awesome-widget/reinit.cpp @@ -65,6 +65,14 @@ void AwesomeWidget::reinit() } +void AwesomeWidget::updateNetworkDevice() +{ + if (debug) qDebug() << PDEBUG; + + values[QString("netdev")] = getNetworkDevice(); +} + + void AwesomeWidget::updateText(bool clear) { if (debug) qDebug() << PDEBUG;