/****************************************************************************
**
** Copyright (C) 2015 The Qt Company Ltd.
** Contact: https://www.qt.io/licensing/
**
** This file is part of the documentation of the Qt PIM Module.
**
** $QT_BEGIN_LICENSE:FDL$
** Commercial License Usage
** Licensees holding valid commercial Qt licenses may use this file in
** accordance with the commercial license agreement provided with the
** Software or, alternatively, in accordance with the terms contained in
** a written agreement between you and The Qt Company. For licensing terms
** and conditions see https://www.qt.io/terms-conditions. For further
** information use the contact form at https://www.qt.io/contact-us.
**
** GNU Free Documentation License Usage
** Alternatively, this file may be used under the terms of the GNU Free
** Documentation License version 1.3 as published by the Free Software
** Foundation and appearing in the file included in the packaging of
** this file. Please review the following information to ensure
** the GNU Free Documentation License version 1.3 requirements
** will be met: https://www.gnu.org/licenses/fdl-1.3.html.
** $QT_END_LICENSE$
**
****************************************************************************/

/*!
\title Qt Contacts C++ API
\page contactsclasses.html
\brief The Qt Contacts API enables you to manage contact information, whether it
is stored locally or remotely.

\section1 Main Classes

\annotatedlist contacts-main

\section1 Contact Details Leaf Classes

Several subclasses of \l{QContactDetail} are provided as part of the
Qt Contacts API.  They are general in design but are intended
to fulfill specific use-cases.  Please note that certain backends may
choose not to support one or more of these subclasses as they appear here;
they may offer their own which provide similar functionality.

\annotatedlist contacts-details

Each of these subclasses provide access to information stored in fields which
may have certain constraints, documented in each subclass documentation.

\section1 Asynchronous Requests

Clients may use either the \l{Qt Contacts Synchronous API}{synchronous}
or \l{Qt Contacts Asynchronous API}{asynchronous} API to access
functionality provided by a manager backend. The
Qt Contacts Asynchronous API is
offered through subclasses of the \l{QContactAbstractRequest} class:

\annotatedlist contacts-requests

\section1 Contact Selection

Clients may select a contact by specifying a unique contact id, or by
supplying a \l{QContactFilter} which matches the contact or contacts they
wish to select.  The various derivatives of \l{QContactFilter} allow for
fine-grained and flexible selection of contacts according to various
criteria:

\annotatedlist contacts-filters


A client can also request that the results of such a selection be sorted,
by passing a \l{QContactSortOrder} (or list of sort orders) to the manager.

\section1 Actions

Actions are described by descriptors and are instantiated by factories.

\annotatedlist contacts-actions

\section1 Backends

A backend implementor must implement the following interfaces:

\annotatedlist contacts-backends

For more information, see \l{Qt Contacts Manager Engines}.

\section1 Synchronization and Serialization

The Qt Contacts API is used by the \l{Qt Versit Overview}{Qt Versit} module.  It allows
serialization of a QContact into a vCard document, and vice versa.

*/
