D20265: Introduce libnotificationmanager
Kai Uwe Broulik
noreply at phabricator.kde.org
Fri Apr 5 14:33:59 BST 2019
broulik created this revision.
broulik added a reviewer: Plasma.
Herald added a project: Plasma.
Herald added a subscriber: plasma-devel.
broulik requested review of this revision.
REVISION SUMMARY
Introduce libnotification
A library revolving around notifications.
This serves as a replacement for the notification dataengine and logic inside the notification plasmoid. Its architecture is inspired by libtaskmanager.
There's three main classes:
- **Notifications**: The main model providing notifications and jobs combined with fine-grained filter, grouping, and sorting capabilities. This is what you want to use for showing notifications. The model itself is very generic and doesn't make any assumptions on representation (e.g. popup or history) and it is up to the user to set the appropriate filters and other properties based on the user's preferences and desired presentation.
- **Settings**: This encapsulates all global settings related to notifications. It will be used by the KCM to write into as well e.g. task manager and notification plasmoid to read settings from. It basically presents a "current state" in which the notification system is in, that includes do not disturb settings/mode.
- **Server**: This class handles the DBus stuff and acts as a dumb proxy between DBus and the consumer, e.g. the `NotificationModel` or the old dataengine.
The old dataengine is wired up to the new `Server` for compatibility. The grouping stuff in there has been dropped, the old plasmoid should otherwise continue to work as normal. The dataengine inhibition feature used by plasma-nm is defunct now, not sure how this could be implemented in the new system as the `Server` knows nothing about inhibitions, it's all filtered in the models.
TEST PLAN
Depends on D20196 <https://phabricator.kde.org/D20196> (for live signal of settings change, shouldnt really matter for testing)
REPOSITORY
R120 Plasma Workspace
REVISION DETAIL
https://phabricator.kde.org/D20265
AFFECTED FILES
CMakeLists.txt
dataengines/notifications/CMakeLists.txt
dataengines/notifications/notificationaction.cpp
dataengines/notifications/notificationsengine.cpp
dataengines/notifications/notificationsengine.h
dataengines/notifications/org.freedesktop.Notifications.xml
libnotificationmanager/CMakeLists.txt
libnotificationmanager/LibNotificationManagerConfig.cmake.in
libnotificationmanager/config-notificationmanager.h.cmake
libnotificationmanager/dbus/org.freedesktop.Notifications.xml
libnotificationmanager/declarative/CMakeLists.txt
libnotificationmanager/declarative/notificationmanagerplugin.cpp
libnotificationmanager/declarative/notificationmanagerplugin.h
libnotificationmanager/declarative/qmldir
libnotificationmanager/job.cpp
libnotificationmanager/job.h
libnotificationmanager/jobdetails.cpp
libnotificationmanager/jobdetails.h
libnotificationmanager/jobdetails_p.h
libnotificationmanager/jobsmodel.cpp
libnotificationmanager/jobsmodel.h
libnotificationmanager/kcfg/badgesettings.kcfg
libnotificationmanager/kcfg/badgesettings.kcfgc
libnotificationmanager/kcfg/donotdisturbsettings.kcfg
libnotificationmanager/kcfg/donotdisturbsettings.kcfgc
libnotificationmanager/kcfg/jobsettings.kcfg
libnotificationmanager/kcfg/jobsettings.kcfgc
libnotificationmanager/kcfg/notificationsettings.kcfg
libnotificationmanager/kcfg/notificationsettings.kcfgc
libnotificationmanager/libnotificationmanager.categories
libnotificationmanager/limitedrowcountproxymodel.cpp
libnotificationmanager/limitedrowcountproxymodel_p.h
libnotificationmanager/notification.cpp
libnotificationmanager/notification.h
libnotificationmanager/notification_p.h
libnotificationmanager/notificationfilterproxymodel.cpp
libnotificationmanager/notificationfilterproxymodel_p.h
libnotificationmanager/notificationgroupcollapsingproxymodel.cpp
libnotificationmanager/notificationgroupcollapsingproxymodel_p.h
libnotificationmanager/notificationgroupingproxymodel.cpp
libnotificationmanager/notificationgroupingproxymodel_p.h
libnotificationmanager/notifications.cpp
libnotificationmanager/notifications.h
libnotificationmanager/notificationsmodel.cpp
libnotificationmanager/notificationsmodel.h
libnotificationmanager/notificationsortproxymodel.cpp
libnotificationmanager/notificationsortproxymodel_p.h
libnotificationmanager/plasmanotifyrc
libnotificationmanager/server.cpp
libnotificationmanager/server.h
libnotificationmanager/server_p.cpp
libnotificationmanager/server_p.h
libnotificationmanager/settings.cpp
libnotificationmanager/settings.h
To: broulik, #plasma
Cc: plasma-devel, jraleigh, GB_2, ragreen, Pitel, ZrenBot, lesliezhai, ali-mohamed, jensreuterberg, abetts, sebas, apol, mart
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.kde.org/pipermail/plasma-devel/attachments/20190405/041156b1/attachment.html>
More information about the Plasma-devel
mailing list