Backend for Notifications NG

Registered by Thomas Strehl

Backend items for notification ng. Backend will provide a fully tested API that can be utilized to render notifications on screen.

Blueprint information

Status:
Complete
Approver:
Thomas Strehl
Priority:
Undefined
Drafter:
None
Direction:
Needs approval
Assignee:
Jussi Pakkanen
Definition:
Approved
Series goal:
Proposed for saucy
Implementation:
Implemented
Milestone target:
milestone icon ubuntu-13.05
Started by
Jussi Pakkanen
Completed by
Thomas Strehl

Whiteboard

By end of March there will be a version that receives notifications, queues them, exposes the relevant ones to the renderer. It might not follow all the rules of notification ordering but will support most.

Capturing an outline of object structure/discussion here
http://collabedit.com/x685v
http://collabedit.com/5ngav

Performance target: no operation (including pushing the maximum of 50 notifications at once) may take more than 0.01 seconds total.

From previous discussions ----snip----
--- backend --- (C++ w/ some qml, but it's up to Jussi)

NotificationSource/Action (talk DBus/libnotify)
  NotificationHandler
    queue (of Notifications)
    displayed_queue (of Notifications passed to the NotificationRenderer)

--- frontend --- (all QML)
    NotificationRenderer
      signal statusChanged()
      bool DisplayNotification(Notification n)

-------snip---------

Next iteration for notifications is the extension with sounds and haptics. Sound is to some degree already covered in the hints entity of the freedesktop notification definition. As hints can be extended adding haptics shouldn't be a problem. Classic example for a notification utilizing sound and haptics is reception of SMS. The implementation on shell side depends on sound/haptics platform APIs.

(?)

Work Items

Work items for ubuntu-13.04-month-6:
[jpakkane] Collect and clarify requirements from frontend developers and design: DONE
[jpakkane] Design new architecture: DONE
[jpakkane] create a base class Action that a NotificationSource can then implement: DONE
[saviq] Review and agree on architecture of Notifications backend: DONE
[jpakkane] Create a NotificationModel manage the Notification queue and notification states, e.g. displayed, hover, timers etc: DONE
[jpakkane] create a Notification that had all the characteristics, e.g. icons, body, summary, and has: DONE
[jpakkane] create a NotificationSource to wrap dbus & construct Notifications: DONE
[jpakkane] Define public API ("internal" API uitilized by frontend/renderer): DONE
[jpakkane] Implement backend and public APIs: DONE

Dependency tree

* Blueprints in grey have been implemented.

This blueprint contains Public information 
Everyone can see this information.