From 6dc59a699895b34d8b0a8ca94923f6135f0e9e0a Mon Sep 17 00:00:00 2001 From: Oleksandr Popel Date: Mon, 26 Apr 2021 00:09:26 +0300 Subject: [PATCH] Add a setting to keep normal notifications always on top BUG: 425071 --- .../package/contents/ui/global/Globals.qml | 3 ++- .../kcfg/notificationsettings.kcfg | 3 +++ libnotificationmanager/settings.cpp | 14 ++++++++++++++ libnotificationmanager/settings.h | 7 +++++++ 4 files changed, 26 insertions(+), 1 deletion(-) diff --git a/applets/notifications/package/contents/ui/global/Globals.qml b/applets/notifications/package/contents/ui/global/Globals.qml index 4e9ebb9d5..643d2eba6 100644 --- a/applets/notifications/package/contents/ui/global/Globals.qml +++ b/applets/notifications/package/contents/ui/global/Globals.qml @@ -456,7 +456,8 @@ QtObject { readonly property var notificationId: model.notificationId popupWidth: globals.popupWidth - type: model.urgency === NotificationManager.Notifications.CriticalUrgency && notificationSettings.keepCriticalAlwaysOnTop + type: (model.urgency === NotificationManager.Notifications.CriticalUrgency && notificationSettings.keepCriticalAlwaysOnTop) + || (model.urgency === NotificationManager.Notifications.NormalUrgency && notificationSettings.keepNormalAlwaysOnTop) ? PlasmaCore.Dialog.CriticalNotification : PlasmaCore.Dialog.Notification notificationType: model.type diff --git a/libnotificationmanager/kcfg/notificationsettings.kcfg b/libnotificationmanager/kcfg/notificationsettings.kcfg index 82c9b98a1..89b479efc 100644 --- a/libnotificationmanager/kcfg/notificationsettings.kcfg +++ b/libnotificationmanager/kcfg/notificationsettings.kcfg @@ -12,6 +12,9 @@ true + + false + true diff --git a/libnotificationmanager/settings.cpp b/libnotificationmanager/settings.cpp index ac843f481..a893b232e 100644 --- a/libnotificationmanager/settings.cpp +++ b/libnotificationmanager/settings.cpp @@ -375,6 +375,20 @@ void Settings::setCriticalPopupsInDoNotDisturbMode(bool enable) d->setDirty(true); } +bool Settings::keepNormalAlwaysOnTop() const +{ + return d->notificationSettings.normalAlwaysOnTop(); +} + +void Settings::setKeepNormalAlwaysOnTop(bool enable) +{ + if (this->keepNormalAlwaysOnTop() == enable) { + return; + } + d->notificationSettings.setNormalAlwaysOnTop(enable); + d->setDirty(true); +} + bool Settings::lowPriorityPopups() const { return d->notificationSettings.lowPriorityPopups(); diff --git a/libnotificationmanager/settings.h b/libnotificationmanager/settings.h index 7654bad8e..cbcccee61 100644 --- a/libnotificationmanager/settings.h +++ b/libnotificationmanager/settings.h @@ -55,6 +55,10 @@ class NOTIFICATIONMANAGER_EXPORT Settings : public QObject * Whether to keep critical notifications always on top. */ Q_PROPERTY(bool keepCriticalAlwaysOnTop READ keepCriticalAlwaysOnTop WRITE setKeepCriticalAlwaysOnTop NOTIFY settingsChanged) + /** + * Whether to keep normal notifications always on top. + */ + Q_PROPERTY(bool keepNormalAlwaysOnTop READ keepNormalAlwaysOnTop WRITE setKeepNormalAlwaysOnTop NOTIFY settingsChanged) /** * Whether to show popups for low priority notifications. */ @@ -266,6 +270,9 @@ public: bool keepCriticalAlwaysOnTop() const; void setKeepCriticalAlwaysOnTop(bool enable); + bool keepNormalAlwaysOnTop() const; + void setKeepNormalAlwaysOnTop(bool enable); + bool lowPriorityPopups() const; void setLowPriorityPopups(bool enable);