[Kde-pim] GSoC: Easy Import and Export of all PIM data in Kontact

Maciek Zarzycki zarzych at gmail.com
Sun Mar 28 00:58:19 GMT 2010


Hi,

I have reread all posts in this thread and I would like to summarize it a bit 
and propose my solution. Any comments from you are more than welcome :).

The main idea behind this project is to create a unified import/export dialog 
for all KDE PIM applications (and perhaps some others). This utility should 
present following features:
* capability of handling various types of data as used in PIM applications
* capability of handling configuration files
* easily extandible to handle new types of data / applications
* user should be able to download new features from 'get hot new stuff'
* as easy to use as possible (some kind of matching presented options with 
input files / context in which the utility is used)

The solution fulfilling all the above requirements must be based on a plugin 
architecture. What is more, the plugins for individual actions should be 
written in interpreted language to allow easy installation from 'get hot new 
stuff' (python or javascript using QScript). What I plan to do is following.

[Framework]
The framework should be written in c++. It should provide a dialog allowing 
user to specify input/output files. It should present user with list of 
selectable actions to perform. After user selects the desired actions, dialog 
should run them one by one and present user with some kind of progress 
notification.
The framework should also contain helper libraries for import/export tasks 
(like importing/exporting mails for KMail or calendar entries for KOrganizer, 
generic Akonadi import/export). They should provide Python (or QScript) 
bindings to be used in plugins.

[Plugins]
Each import/export action should be represented by a plugin. If possible I 
would like to have plugins written in Python because of its excellent KDE 
bindings and ease of use. If embedding Python scripts in c++ dialog is 
impossible or too hard to do, plugins should be written in ECMA script and 
used through QScript framework. The plugins should be written in a way to 
minimize user involvement (deduce as much as possible from applications' 
config files). They should use methods from helper libraries delivered by the 
framework.

[Plugins API]
All plugins should implement following API:
* execute() method to run plugin's action. It should take list of URLs 
containing input/output files.
* progress signal informing about plugin's progress
* error signal informing about possible error
* optional cancel slot (?)

As for selection of actions displayed in the dialog, I was thinking about the 
'context' mechanism. The simplest solution would be to specify list of 
applications that a plugin might be usable for. Based on this, the dialog 
would choose which actions to show to user.


This is the project I would like to work on. It has some interesting 
challenges in it  that make it interesting for me. Please tell me what you 
think about it. I'll be glad for any possible improvements or different ideas.

Cheers,
Maciek
_______________________________________________
KDE PIM mailing list kde-pim at kde.org
https://mail.kde.org/mailman/listinfo/kde-pim
KDE PIM home page at http://pim.kde.org/



More information about the kde-pim mailing list