TODO for the GSoC Project: Filling the gap between OpenSync and KitchenSync
-----------------------------------------------------------------------------

1) [ ] Configuration Dialogs
       1.1) [ ] Documenting configuration format
       1.2) [ ] Adding missing configuration dialogs for stable OpenSync plugins
       1.3) [ ] Tweaking existing configuration dialogs
                1.3.1) [ ] Implementing Bluetooth discovering widget

2) [ ] OpenSync 0.30
       2.1) [ ] Adapting libqopensync to OpenSync 0.30 API
       2.2) [ ] Adapting configuration dialogs
       2.3) [ ] Tweaking existing features

Details information
======================

1) Configuration Dialogs
-------------------------

1.1)
To implement the missing configuration dialogs and tweaking the existing ones,
we need the specifications for the configuration of the plugins.

So the first step is to read through the source code/config files of all plugins,
finding out which configuration options they provide and documenting them in a
formal way.

With the possibility of future autogenerating of configuration dialogs in mind,
the documentation should be done in the form of XML Schema Definitions (XSD).

A subtask is here to define XSD data types for the documentation together with
the OpenSync developers.

1.2)
There are the following plugins which are missing configuration dialogs
in KitchenSync:

  - Evolution (does it make sense?)
  - KDEPIM (needs extension)
  - JESCS
  - MOTO
  - SunBird
  - SynCE

The task is to implement configuration dialogs which provide gui elements to
configure all available options of the plugins.

1.3)
For the following plugins exist configuration dialogs already:

  - File
  - GoogleCalendar
  - Gnokii
  - GPE
  - IrMC
  - LDAP
  - Opie
  - PALM
  - SyncML

However not all dialogs are userfriendly or look pretty. So this task includes
polishing up these configuration dialogs and improving code sharing.
So big parts of the LDAP configuration dialog can be replaced with the KDE standard
LDAP widget (see KLDAP::LdapConfigWidget).

1.3.1)
For further code sharing in configuration dialogs a bluetooth device discovery widget
based on the kbluetooth framework would be nice.


2) OpenSync 0.30
-------------------------

2.1)
From OpenSync 0.2x to 0.30 the API has changed in many ways, it has been
redesigned to be more modular and offers also new features.

This task is about adapting libqopensync (our Qt wrapper around the C-ish opensync library)
to the new OpenSync API, so that all methods needed in KitchenSync are available
in libqopensync.

This includes methods of the following opensync library modules:
    - [list will be updated]

As reference of how to use the new API, the sources from svn/trunk/msynctool can be used.

2.2)
The new version of OpenSync will also offer new features:

  - Partial merging/demerging of data elements (e.g. 'Put only 3 of the 5 telephone numbers on my PDA')
  - Capabilities (e.g. 'Plugin X supports only field W,Y,Z of a contact')
  - Discovery Sync (dynamic querying of supported formats)
  - More status callbacks

These features must be represented in the KitchenSync GUI to allow the user to make use
of them.

The task is to implement GUI elements for these features.

Further discussions how to represent the features to a user should be discussed with the
GSoC mentor and the OpenSync developers.

2.3)
In KitchenSync for OpenSync 0.2x we have already GUI representation for the data filter
feature (e.g. 'Sync only contacts and todos but no events'), however it's not really pretty.

The task is to find a more appealing way to represent this feature to the user.


Further General Information
=============================

Coding Style
--------------
For good code quality and as guarantor for further usage the changed and new code must
comply the KDE-PIM coding standards as defined in http://pim.kde.org/development/coding-korganizer.php

Information
-------------
To being up to date on KDE PIM development and to communicate with the other
KDE PIM developer reading the mailing list kde-pim@kde.org is very helpfull.

Other communication channels are IRC #kontact on irc.kde.org.

Status reports
----------------
Although the mentor will monitor every SVN commit, a weekly status report should be sent
to him to keep him informed about the current progress.

Have fun and good luck! :)
