/****************************************************************************
**
** Copyright (C) 2015 The Qt Company Ltd.
** Contact: http://www.qt-project.org/legal
**
** This file is part of the documentation of the Qt Toolkit.
**
** $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$
**
****************************************************************************/

/*!

\page qtextended-messaging.html
\target top
\title Messaging

\section1 Introduction
 
The Messaging Framework provides the following messaging features:
\list 1
\o a library for developing applications that work with messages
\o a server application supporting multiple messaging transport mechanisms
\o an example client application supporting common messaging functionality
\endlist

The \l{Messaging Framework Client Library}{Client library} provides classes giving access to all messages stored on the device, via a uniform interface. 
It simplifies the task of creating messaging client applications, and permits other Messaging Framework applications to interact with messaging data where appropriate.
New types of messages can be supported by the library without modification to existing client applications.

The \l{MessageServer Daemon}{MessageServer} application is a daemon, designed to run continuously while providing services to client applications.
It provides messaging transport functionality, communicating with external servers on behalf of Messaging Framework client applications.
New types of messaging (such as Instant Messages or video messages) can be handled by the server application without modification to existing client applications.

The \l{Messages Client}{Messages} example client application provides an implementation of standard functionality for creating and viewing messages.

\section1 Architecture

The Messaging Framework uses a database to store all messaging-related data. 
Rather than providing access via Structured Query Language, the Client library wraps the database with classes providing structured, focussed access to the database.
Clients can add, remove or update messaging data via the wrapper classes, with appropriate guarantees of isolation, and with automatic propagation of updates between clients.

Clients access messaging data via the Client library which provides a direct connection to the messaging database. 
Notifications of database changes that occur as a result of other clients' actions are received by IPC, and the messaging library automatically reflects those changes in all clients.

A set of model/view classes are provided for clients to access the messaging data content.
A flexible system of filtering and sorting keys is provided, enabling clients to display a specific subset of the library's data with minimal resource overhead.

Rather than requiring each client application to perform transmission and retrieval of messages from external sources, a server application provides these services to any Client library client.
The server receives service requests from clients via IPC, and reports events and status information back over the same channel.
However, to avoid the overhead of passing message data within the system, the server reads and writes messages directly to and from the messaging database, via the library class interface.
Messaging clients do not need to communicate with the server directly.

For detailed information refer to:

\list
\o \l{Messaging Framework Client Library}{Client library}
\o \l{MessageServer Daemon}{MessageServer server daemon}
\o \l{Messages Client}{Messages client application}
\endlist

\section1 Changes Between Messaging Framework Versions

Historical changes in the \l {Messaging Framework Client Library} API are listed in \l{changes-qtopiamail.html}{CHANGES.qdoc}.

Historical changes in the \l {Message Server Support Library} API are listed in \l{changes-messageserver.html}{CHANGES.qdoc}.

*/
