From 5efae6f4e4019e5e308617fa029e9f6e77e623b5 Mon Sep 17 00:00:00 2001 From: David Redondo Date: Fri, 26 Feb 2021 10:15:37 +0100 Subject: [PATCH] Add action to open the system monitor from the applet It's also accessible by middle clicking on it BUG:432588 FIXED-IN:5.22 --- .../systemmonitor/systemmonitor/CMakeLists.txt | 2 ++ .../systemmonitor/package/contents/ui/main.qml | 15 +++++++++++++++ .../systemmonitor/systemmonitor/systemmonitor.cpp | 10 ++++++++++ .../systemmonitor/systemmonitor/systemmonitor.h | 1 + 4 files changed, 28 insertions(+) diff --git a/applets/systemmonitor/systemmonitor/CMakeLists.txt b/applets/systemmonitor/systemmonitor/CMakeLists.txt index 83b75246f..e1ee77802 100644 --- a/applets/systemmonitor/systemmonitor/CMakeLists.txt +++ b/applets/systemmonitor/systemmonitor/CMakeLists.txt @@ -16,6 +16,8 @@ target_link_libraries(plasma_applet_systemmonitor KF5::ConfigCore KF5::ConfigGui KF5::Declarative + KF5::KIOGui + KF5::Notifications KSysGuard::SysGuard KSysGuard::Sensors KSysGuard::SensorFaces diff --git a/applets/systemmonitor/systemmonitor/package/contents/ui/main.qml b/applets/systemmonitor/systemmonitor/package/contents/ui/main.qml index 301a199fa..505850f37 100644 --- a/applets/systemmonitor/systemmonitor/package/contents/ui/main.qml +++ b/applets/systemmonitor/systemmonitor/package/contents/ui/main.qml @@ -52,4 +52,19 @@ Item { } Plasmoid.configurationRequired: plasmoid.nativeInterface.faceController.highPrioritySensorIds.length == 0 && plasmoid.nativeInterface.faceController.lowPrioritySensorIds.length == 0 && plasmoid.nativeInterface.faceController.totalSensor.length == 0 + + MouseArea { + parent: plasmoid + anchors.fill: plasmoid + acceptedButtons: Qt.MiddleButton + onClicked: action_openSystemMonitor() + } + + function action_openSystemMonitor() { + Plasmoid.nativeInterface.openSystemMonitor() + } + + Component.onCompleted: { + Plasmoid.setAction("openSystemMonitor", i18nc("@action", "Open System Monitor..."), "utilities-system-monitor") + } } diff --git a/applets/systemmonitor/systemmonitor/systemmonitor.cpp b/applets/systemmonitor/systemmonitor/systemmonitor.cpp index 613e07c8e..1cbd48848 100644 --- a/applets/systemmonitor/systemmonitor/systemmonitor.cpp +++ b/applets/systemmonitor/systemmonitor/systemmonitor.cpp @@ -31,7 +31,10 @@ #include #include +#include #include +#include +#include SystemMonitor::SystemMonitor(QObject *parent, const QVariantList &args) : Plasma::Applet(parent, args) @@ -91,6 +94,13 @@ void SystemMonitor::configChanged() } } +void SystemMonitor::openSystemMonitor() +{ + auto job = new KIO::ApplicationLauncherJob(KService::serviceByDesktopName("org.kde.plasma-systemmonitor")); + job->setUiDelegate(new KNotificationJobUiDelegate(KJobUiDelegate::AutoHandlingEnabled)); + job->start(); +} + K_EXPORT_PLASMA_APPLET_WITH_JSON(systemmonitor, SystemMonitor, "metadata.json") #include "systemmonitor.moc" diff --git a/applets/systemmonitor/systemmonitor/systemmonitor.h b/applets/systemmonitor/systemmonitor/systemmonitor.h index f1b6fa828..4bd175fec 100644 --- a/applets/systemmonitor/systemmonitor/systemmonitor.h +++ b/applets/systemmonitor/systemmonitor/systemmonitor.h @@ -49,6 +49,7 @@ public: ~SystemMonitor() override; void init() override; + Q_INVOKABLE void openSystemMonitor(); KSysGuard::SensorFaceController *faceController() const;