/** @mainpage Akonadi client library

\section libakonadi_intro Introduction

libakonadi is the client access library for using the Akonadi PIM data server.
All processes accessing Akonadi, including those which communicate with a remote
server (\ref akonadi_design_agents "agents"), are considered clients.

Functionality provided by libakonadi:

- \ref libakonadi_jobs
- \ref libakonadi_monitor
- \ref libakonadi_collections
- \ref libakonadi_pimitems
- \ref libakonadi_serializer
- \ref libakonadi_resource

\section libakonadi_jobs Accessing the Akonadi server

Accessing the Akonadi server is done using job-classes derived from Akonadi::Job. The
communication channel with the server is provided by Akonadi::Session.

\todo Complete this section.

\section libakonadi_monitor Change notifications

The Akonadi::Monitor class allows you to monitor specific resources,
\ref akonadi_concepts_collections "collections" and PIM items for changes.

\section libakonadi_collections Collection retrieval and manipulation

See \ref akonadi_concepts_collections "Collection Concept" for more information
about the concept of collections. A collection is represented by the Akonadi::Collection class.

Classes to retrieve information about collections:

- Akonadi::CollectionFetchJob
- Akonadi::CollectionSelectJob
- Akonadi::CollectionStatisticsJob

Classes to manipulate collections:

- Akonadi::CollectionCreateJob
- Akonadi::CollectionModifyJob
- Akonadi::CollectionDeleteJob

There is also Akonadi::CollectionModel, which is a self-updating model class which can
be used in combination with Akonadi::CollectionView. Akonadi::CollectionFilterProxyModel
can be used to limit a displayed collection tree to collections supporting a certain
type of PIM items.

\section libakonadi_pimitems PIM item retrieval and manipulation

PIM items are represented by classes derived from Akonadi::Item.
Items can be retrieved using job classes derived from Akonadi::ItemFetchJob.

The following classes are provided to manipulate PIM items:

- Akonadi::ItemCreateJob
- Akonadi::ItemModifyJob
- Akonadi::ItemDeleteJob
- Akonadi::ExpungeJob

Akonadi::ItemModel provides a self-updating model class which can be used to display the content
of a collection.

\section libakonadi_serializer PIM item serializer

The class Akonadi::ItemSerializer is responsible for converting between the stored (binary) representation
of a PIM item and the objects used to handle these items provided by the corresponding libraries (kabc, kcal, etc.).

Serializer plugins allow you to add support for new kinds of PIM items to Akonadi.
Akonadi::ItemSerializerPlugin can be used as a base class for such a plugin.

\section libakonadi_resource Agents and Resources

The class Akonadi::AgentBase is the commen base class for all agents. It provides commonly needed
functionality such as change monitoring and recording.

Resources are special type of agents, Akonadi::ResourceBase is the base class them. It provides the
necessary interfaces to the server as well as many convenience functions to make implementing
a new resource as easy as possible.

*/

/**

\defgroup AkonadiMacros Akonadi Macros

*/

// DOXYGEN_REFERENCES = kdecore kdeui
