Warning, /plasma/plasma-desktop/design/systemtraywidget is written in an unsupported language. File is not indexed.
0001 The system tray widget is divided into three parts: core, ui and protocols. 0002 0003 Core 0004 ---- 0005 Core provides the three basic concepts that drive the widget: 0006 * Task: an icon in the tray 0007 * Notification: a visual notification from an application 0008 * Job: a long running job such as a file transfer 0009 0010 Protocol implements a source for Tasks, Notifications and/or Jobs and has a set 0011 of signals used to announce the coming and going of its items. At its discretion, 0012 a Protocol can create (or destroy) Tasks, Notifications and Jobs at any time. 0013 0014 A Manager class is provided in Core that looks after and tracks the three kinds of items 0015 along with all the Protocols. The Manager instantiates the Protocols and relays the 0016 critical signals, allowing the widget to simply pay attention to the Manager and 0017 treat all Tasks, Notifications and Jobs as if they came from the same place. The Manager 0018 is able to treat all Protocols generically using the Protocol API. 0019 0020 All Task implementations provide a way to return a QGraphicsWidet for given host. 0021 The mapping between hosts and widgets is handled automatically by the Task class, and 0022 this, along with the central Manager, allows any Task to be shared simultaneously across 0023 multiple widgets. 0024 0025 Notifications and Jobs don't have this problem as they simply provide access to 0026 data which the ui is responsible for showing in some way. 0027 0028 Also provided in the core is a Task specifically for managing the Extenders of a host 0029 Plasma::Applet for Jobs and Notifications call, rather creatively, ExtenderTask. 0030 0031 0032 Protocols 0033 --------- 0034 The following protocols currently exist: 0035 0036 DBusSystemTrayProtocol: support for the dbus driven NotificationItem; it provides Tasks; 0037 for information on the design of this protocol, consult the 0038 KStatusNotifierItem documentation 0039 0040 FdoProtocol: support for the XEmbed based freedesktop.org system tray specification; 0041 it provides Tasks, though these tasks do not work properly in more than one 0042 widget at a time due to limitations in the XEmbed system 0043 0044 JobsProtocol: access to the applicationjobs DataEngine; it provides Jobs 0045 0046 NotificationsProtocol: access to the notificadtions DataEngine; it provides Notifications 0047 0048 PlasmoidProtocol: features Plasmoids-wrapped-in-Tasks; is not currently fully functional 0049 0050 0051 The UI 0052 ------ 0053 The user interface consists of a Plasma::Applet class, a layout class and a TasksArea which 0054 contains the Tasks published. The UI features the ability to order as well as hide items, 0055 register new Tasks, etc.