1/*! @mainpage %Maliit Framework Documentation
2
3@section intro Introduction
4
5%Maliit provides a flexible and cross-platform input method framework. It has a
6plugin-based client-server architecture where applications act as clients and
7communicate with the %Maliit server via input context plugins. The communication
8link currently uses D-Bus. %Maliit is an open source framework (LGPL 2) with
9open source plugins (BSD).
10
11The framework provides two distinct plugin interfaces:
12- @ref pluginapi "Maliit plugin", for writing input methods such as virtual keyboards or handwriting
13- %Maliit engine plugin, for writing input method engines used for word prediction and error correction.
14
15@if false
16[ATTENTION: engine interface is not Maliit-fied yet].
17* Writing Maliit plugins [LINK]
18* Writing Maliit engine plugins [LINK]
19@endif
20
21@image html architecture-overview.png
22
23The %Maliit @ref architecture provides an abstraction that enables application
24developers to concentrate on application logic, with the option to extend input
25method interaction with @ref libmaliitintro, while plugin developers are
26insulated from applications. Neither plugins nor applications know directly of
27each other, nor do they have to use the same toolkits. For example, plugins
28written for Qt or MeeGo Touch applications will work just as well for GTK+
29applications, without any modifications.
30
31The framework is responsible for switching to specific plugins, depending on
32the application and device state. For example, when opening a hardware
33keyboard, %Maliit will automatically search for a HWKB-capable plugin and
34activate it. Additionally, plugins can trigger a plugin or language layout
35change. Plugins announce their services via a plugin description interface, the
36list of languages they support, whether they are on-screen or
37HWKB plugins (or both).
38
39@subsection maliit-fwbasicusage Basic Usage
40
41@subsubsection maliit-fwclasses Main classes
42
43The following base classes are needed to implement an input method UI plugin:
44
45- MAbstractInputMethod : to allow input method server to update input method plugin state
46- MAbstractInputMethodSettings : to provide settings in control panel
47- MInputMethodPlugin : to enable the plugin to be loaded by the input method server
48
49@subsection general General documentation
50- <a href="architecture.html">Architecture</a>
51- <a href="extensions.html">Extensions to Qt</a>
52- <a href="pluginsystem.html">Plugin System</a>
53- <a href="internals.html">Feature Internals</a>
54- <a href="toolbarxml.html">Toolbar Widget XML Specification</a>
55
56@subsection tutorial Tutorial
57- <a href="plugintutorial.html">How to implement a plugin</a>
58
59@section libmaliitintro Libmaliit
60
61@ref libmaliit "Libmaliit" is an input method extension library for Qt — use it to add application support for screen rotation and attribute extensions.
62
63@subsection libmaliitclasses Useful classes
64
65- @ref Maliit::AttributeExtension "AttributeExtension" : Register extensions such as key overrides.
66- @ref Maliit::InputMethod "InputMethod" : Listen to device orientation, language and raw key events.
67- @ref Maliit::PreeditInjectionEvent "PreeditInjectionEvent" : Extension for preedit text inside text edits.
68
69@section api API reference
70<a href="classes.html">All Classes</a>
71
72*/
73