The Kontact framework acts as a container for plugging in other applications as components. It provides the standard environment like main window, menu, tool and status bars as well as a navigation bar to control the embedded components. Applications to be embedded into this environment have to be accompanied by a Kontact plugin. The plugin acts as mediator between the framework and the application. It exposes the functionality of the application which is being integrated by implementing the Kontact Plugin API and interacts with the Kontact Framework by using the Kontact Core API. All this is done in-process. Communication between the components is done via DCOP through clearly defined standard interfaces. Figure 1 shows the component model.
The plugin API specifies functions which have to be implemented by concrete plugins for providing access to the corresponding KPart object, the summary view and options how the component appears and is handled in the framework application. This includes title labels, icons and hints about the position in the navigation bar. In addition to that it provides functions to control the component behavior, starting and selecting of a component, requesting if the component runs embedded or stand-alone and access to the interfaces of the underlying component technologies. Finally the plugin API provides functions for handling of drag and drop functionality and user interface actions.
The framework core API which gives the plugins access to the framework mainly deals with loading and selecting of plugins belonging to other components. Inter-component communication is done by using the DCOP interfaces of the individual components.
A Kontact plugin can provide an application or document main view, a summary view and some specific functionality and data like menu and toolbar actions, configuration, ''about'' data and more. If an application already provides a KPart as part of its interface adding a Kontact plugin in order to integrate it into Kontact is only a few lines of code.