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

Reply via email to