From ac4f9bdc3c9a788e50b38c6b5e645f34cc2d127e Mon Sep 17 00:00:00 2001 From: Fushan Wen Date: Mon, 13 Jun 2022 23:59:04 +0800 Subject: [PATCH] kcm: provide restart button in InlineMessage after Global scale is changed on X11 This slightly improves the usability. --- kcm/CMakeLists.txt | 1 + kcm/kcm.cpp | 12 ++++++++++++ kcm/kcm.h | 1 + kcm/package/contents/ui/main.qml | 7 +++++++ 4 files changed, 21 insertions(+) diff --git a/kcm/CMakeLists.txt b/kcm/CMakeLists.txt index 616b57e..ebf255e 100644 --- a/kcm/CMakeLists.txt +++ b/kcm/CMakeLists.txt @@ -26,6 +26,7 @@ add_library(kcm_kscreen MODULE ${kcm_kscreen_SRCS}) kconfig_add_kcfg_files(kcm_kscreen GENERATE_MOC globalscalesettings.kcfgc) target_link_libraries(kcm_kscreen + Qt::DBus Qt::Sensors KF5::ConfigGui KF5::CoreAddons diff --git a/kcm/kcm.cpp b/kcm/kcm.cpp index 26762cd..0a41a34 100644 --- a/kcm/kcm.cpp +++ b/kcm/kcm.cpp @@ -25,6 +25,9 @@ #include #include +#include +#include +#include #include K_PLUGIN_FACTORY_WITH_JSON(KCMDisplayConfigurationFactory, "kcm_kscreen.json", registerPlugin();) @@ -104,6 +107,15 @@ void KCMKScreen::revertSettings() } } +void KCMKScreen::requestReboot() +{ + QDBusMessage msg = QDBusMessage::createMethodCall(QStringLiteral("org.kde.LogoutPrompt"), + QStringLiteral("/LogoutPrompt"), + QStringLiteral("org.kde.LogoutPrompt"), + QStringLiteral("promptReboot")); + QDBusConnection::sessionBus().asyncCall(msg); +} + void KCMKScreen::setStopUpdatesFromBackend(bool value) { m_stopUpdatesFromBackend = value; diff --git a/kcm/kcm.h b/kcm/kcm.h index 9bc31df..ab21bfc 100644 --- a/kcm/kcm.h +++ b/kcm/kcm.h @@ -69,6 +69,7 @@ public: Q_INVOKABLE void forceSave(); void doSave(bool force); Q_INVOKABLE void revertSettings(); + Q_INVOKABLE void requestReboot(); Q_INVOKABLE void setStopUpdatesFromBackend(bool value); Q_INVOKABLE void updateFromBackend(); diff --git a/kcm/package/contents/ui/main.qml b/kcm/package/contents/ui/main.qml index 0d779aa..507d97a 100644 --- a/kcm/package/contents/ui/main.qml +++ b/kcm/package/contents/ui/main.qml @@ -68,6 +68,13 @@ KCM.SimpleKCM { text: i18n("New global scale applied. Change will come into effect after restart.") visible: false showCloseButton: true + actions: [ + Kirigami.Action { + icon.name: "system-reboot" + text: i18n("Restart") + onTriggered: kcm.requestReboot(); + } + ] } Kirigami.InlineMessage { id: connectMsg -- GitLab