Plasma/ShellDesign
Introduction
To create a full featured Plasma shell, whether it is a full primary user interface such as Plasma Desktop or Plasma Netbook or an application helper like the Plasma KPart of Plasma Media Center, there are a number of components that the application needs to provide and even more that are optional to create a well working experience.
This article documents each of these components and how they fit together.
Core Presentation
The Base Canvas: Corona
Views
Custom Containments
PluginLoader
Window Dressings
Containment Tool Boxes
Each containment shown by the Plasma Shell, can have a central place to show the main actions that can be performed.
A default set of toolbox actions is present in the base Containment implementation. Containment subclasses, as well as the Corona implementation of the Plasma shell can add their own.
The method Containment::AddToolBoxAction(QAction *a) adds the action a to the toolbox.
The action can contain metadata about its category, to help the toolbox implementations to visually group together similar actions, to do that call
QAction::setData(AbstractToolBox::ToolType)
A ToolBox is a subclass of Plasma::AbstractToolBox and is usually loaded as a plugin, whose desktop file will have the entry X-KDE-ServiceTypes=Plasma/ToolBox
A Containment implementation can force its own ToolBox implementation, but this is discouraged, especially in containments of type DesktopContainment or PanelContainment.
By default, containments will load the ToolBox plugin the Corona tells them. To set a default ToolBox plugin, use the function
Corona::setDefaultToolBoxPlugin(const QString &PluginName, Plasma::ContainmentType type)
in the constructor of your Corona implementation.