add contextual actions

fix icons
This commit is contained in:
arcan1s 2014-09-02 03:56:34 +04:00
parent 54174974b1
commit a5c352bc06
4 changed files with 90 additions and 2 deletions

View File

@ -17,7 +17,10 @@
#include "awesome-widget.h" #include "awesome-widget.h"
#include <KStandardDirs>
#include <Plasma/ToolTipManager> #include <Plasma/ToolTipManager>
#include <QDesktopServices>
#include <QDir>
#include <QGraphicsLinearLayout> #include <QGraphicsLinearLayout>
#include <QGraphicsScene> #include <QGraphicsScene>
#include <QGraphicsView> #include <QGraphicsView>
@ -53,6 +56,35 @@ AwesomeWidget::AwesomeWidget(QObject *parent, const QVariantList &args)
AwesomeWidget::~AwesomeWidget() AwesomeWidget::~AwesomeWidget()
{ {
if (debug) qDebug() << PDEBUG;
}
QList<QAction *> 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); Plasma::ToolTipManager::self()->setContent(this, toolTip);
// body // body
createActions();
mainLayout = new QGraphicsLinearLayout(); mainLayout = new QGraphicsLinearLayout();
mainLayout->setContentsMargins(1, 1, 1, 1); mainLayout->setContentsMargins(1, 1, 1, 1);
mainLayout->setOrientation(Qt::Horizontal); 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) K_EXPORT_PLASMA_APPLET(ptm-awesome-widget, AwesomeWidget)

View File

@ -52,6 +52,9 @@ public:
QMap<QString, QString> updateDataEngineConfiguration(const QMap<QString, QString> rawConfig); QMap<QString, QString> updateDataEngineConfiguration(const QMap<QString, QString> rawConfig);
public slots: public slots:
// contextual actions
void showKsysguard();
void showReadme();
// dataengine // dataengine
void addDiskDevice(const QString source); void addDiskDevice(const QString source);
void connectToEngine(); void connectToEngine();
@ -61,6 +64,7 @@ public slots:
void configAccepted(); void configAccepted();
void configChanged(); void configChanged();
// update events // update events
void updateNetworkDevice();
void updateText(bool clear = false); void updateText(bool clear = false);
void updateTooltip(); void updateTooltip();
@ -77,10 +81,12 @@ private slots:
void editTempItem(QListWidgetItem *item); void editTempItem(QListWidgetItem *item);
protected: protected:
QList<QAction *> contextualActions();
void createConfigurationInterface(KConfigDialog *parent); void createConfigurationInterface(KConfigDialog *parent);
private: private:
// functions // functions
void createActions();
void initValues(); void initValues();
QStringList findKeys(); QStringList findKeys();
QStringList getKeys(); QStringList getKeys();
@ -88,6 +94,7 @@ private:
QGraphicsLinearLayout *mainLayout; QGraphicsLinearLayout *mainLayout;
CustomLabel *textLabel; CustomLabel *textLabel;
QTimer *timer; QTimer *timer;
QList<QAction *> contextMenu;
// tooltip // tooltip
Plasma::ToolTipContent toolTip; Plasma::ToolTipContent toolTip;
QGraphicsScene *toolTipScene; QGraphicsScene *toolTipScene;

View File

@ -620,7 +620,7 @@ void AwesomeWidget::contextMenuCustomCommand(const QPoint pos)
if (uiDEConfig.tableWidget_customCommand->currentItem() == 0) return; if (uiDEConfig.tableWidget_customCommand->currentItem() == 0) return;
QMenu menu(uiDEConfig.tableWidget_customCommand); 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)); QAction *action = menu.exec(uiDEConfig.tableWidget_customCommand->viewport()->mapToGlobal(pos));
if (action == remove) if (action == remove)
uiDEConfig.tableWidget_customCommand->removeRow( uiDEConfig.tableWidget_customCommand->removeRow(
@ -634,7 +634,7 @@ void AwesomeWidget::contextMenuPkgCommand(const QPoint pos)
if (uiDEConfig.tableWidget_pkgCommand->currentItem() == 0) return; if (uiDEConfig.tableWidget_pkgCommand->currentItem() == 0) return;
QMenu menu(uiDEConfig.tableWidget_pkgCommand); 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)); QAction *action = menu.exec(uiDEConfig.tableWidget_pkgCommand->viewport()->mapToGlobal(pos));
if (action == remove) if (action == remove)
uiDEConfig.tableWidget_pkgCommand->removeRow( uiDEConfig.tableWidget_pkgCommand->removeRow(

View File

@ -65,6 +65,14 @@ void AwesomeWidget::reinit()
} }
void AwesomeWidget::updateNetworkDevice()
{
if (debug) qDebug() << PDEBUG;
values[QString("netdev")] = getNetworkDevice();
}
void AwesomeWidget::updateText(bool clear) void AwesomeWidget::updateText(bool clear)
{ {
if (debug) qDebug() << PDEBUG; if (debug) qDebug() << PDEBUG;