Qt Extended Home · Index · Classes · Headers · Overviews codeless banner

Desktop Synchronization

Intended Audience

This documentation is aimed primarily at system integrators. A complete Desktop Synchronization solution will require some device-specific code and may involve writing device drivers. It will also require building the Qt Extended Sync Agent.


From a high level, Desktop Synchronization is made up of client and server plugins that communicate their changes to the Sync Manager which handles conflicts and passes on the merged data. The reference implementation provides plugins for Qt Extended PIM and Outlook. The components look like this.

Desktop Synchronization Overview

The plugins are responsible for converting the data into a common format. This is defined separately for each dataset. See Datasets for the datasets that are supported by the reference implementation.

See Add a new device plugin and Add a new desktop plugin for how to add a plugin.

Remote Engine

The remote engine is an abstract entity. It consists of a combination of hardware, software and drivers but these do not matter to the high level synchronization process. A simplified overview of these components is given below.

Remote Engine Overview

As you can see the components on each machine are roughly the same. The plugin interface is remoted using QCop messages which are serialized onto a stream. The underlying driver is exposed as a QIODevice which carries the messages. The components of the Remote Engine are examined in more detail below.


The Synchronization application runs on Qt Extended.

Synchronization Overview

Qt Extended PIM Plugins

The PIM plugins are instaces of Qtopia4SyncPlugin. A Qtopia4SyncPluginFactory is used so that a single plugin file can contain all of the PIM plugins.


This class converts from QCop messages to the Qtopia4SyncPlugin API. It also performs device-specific house keeping such as recording the sync anchors.

QCop Bridge

This class serializes QCop messages for transmission. It uses the qdsync Protocol over a QIODevice.


This class exposes the USB serial driver as a QIODevice for the QCop Bridge. See Use a Serial Connection for more information. Synchronization also contains support for TCP/IP. See Use a TCP/IP Connection for more information.

USB Serial Gadget

This is the Linux 2.4 serial_fd gadget. The Greenphone also supports the Linux 2.4 net_fd gadget which works well with Linux PCs.

Note that Qt Extended does not provide a Windows driver for the Linux net_fd gadget.

Qt Extended Sync Agent

Qt Extended Sync Agent runs on the Windows PC.

Qt Extended Sync Agent Overview

Outlook Plugins

The Outlook plugins are instaces of QDServerSyncPlugin. They communicate to Outlook via the Outlook Object Model (OOM) although the Messaging API (MAPI) is used in some places to avoid security dialogs.


This class implements QDClientSyncPlugin and converts to QCop messages. A QDClientSyncPluginFactory is used so that one Qtopia4Sync instance can be created for each dataset that the device supports.

QCop Connection

This class implements QDConPlugin and serializes QCop messages for transmission. It uses the qdsync Protocol over a QIODevice.

Serial Link

This class implements QDLinkPlugin and exposes the USB driver as a QIODevice to the QCop Connection. It supports proper COM ports and the broken COM port implementation used by the Greenphone USB serial driver. See Use a Serial Connection for more information. Qt Extended Sync Agent also contains support for a TCP/IP link. See Use a TCP/IP Connection for more information.

USB Serial Driver

This is a Windows driver for the Greenphone's serial_fd gadget.

See also Overviews.

Copyright © 2009 Trolltech
Qt Extended Sync Agent Documentation