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