[Kde-pim] OpenChange-Akonadi Resource GSoC 2008 Project

Alvarez, Alan SGT MIL USA FORSCOM alan.alvarez at us.army.mil
Thu Aug 28 13:36:31 BST 2008


Hello list,

	My name is Alan Alvarez, I was a GSoC 2008 student and I worked on the OpenChange Resource (native support for MS Exchange Servers) for Akonadi this summer.

In this email I will describe some of the tasks I accomplished and plans for the future for the resource.

I started off working on a C++ wrapper for libmapi which I named libmapi++.

- libmapi++: The main purpose of designing and implementing libmapi++ was to serve as a C++ wrapper to libmapi which would make it easier for me to implement the Akonadi resource. By using libmapi++ I have been able to avoid duplication of code, and have been able to write C++ code that can better integrate with Akonadi's libraries which (of course) are written in C++/Qt.

The libmapi++ code resides in OpenChange's svn repository and has been integrated into trunk. Which means it will be released as part of OpenChange.

Some of the interfaces libmapi++ already features are:
- Sessions (MAPI Sessions) (Make it easier to manage MAPI sessions)
- MAPI Objects (messages, message_store, attachments and folders) (Which include methods to manage these objects)
- property_container and property_container_iterator (A wrapper for SPropTagArray, SPropValueArray and mapi_SPropValueArray) 
- Profile functions (Only a small set of these are currently implemented)

libmapi++ still needs a lot more work done for it to be a complete product, but I think it is usable in its current state, and could be used by other people/projects that would like to interact with libmapi from C++. I've been including doxygen comments in the header files and I plan to write a small user guide for it to make it easier for others to use it.

- Akonadi Resource:
The resource code is basically an evolution of Brad Hard's (My GSoC mentor) code. Of course, a lot has been modified mainly to integrate libmapi++ and to add new features.

Some of the things I've added:
  - Messages: 
    - Pulled more message properties.  
    - Created multipart messages.
    - Resource is now able to fetch HTML and PlainText bodies.
    - Fetch attachments

  Contacts:
    - Able to pull contact email addresses.
    - Able to pull contact data from retrieveItem()
    - Only a basic clean-up of the appendContactToItem() has been done.

  Calendars:
    - Pull all Appointment (Events) properties including Alarms and recurrence properties.
    - Pulled All Task (TODO) properties including recurrence with the exception of Reminders (Alarms)

As you can see most of the work I've done is in pulling data from the exchange server. As I will be traveling for the next two/three months, I will not be able to keep working on the resource at the moment. Working on the resource requires having a MS Exchange server which I have already shipped home. However, My mentor (Brad) and I have been talking about working on support for the offline address book while I'm traveling. So I might work on this during these months.

When I finally do get back home, I plan to finish pulling properties for Journals and some message properties that are missing and then on to pushing data to the Exchange Server.

As a final note, I'd like to thank Brad Hards for helping me out throughout the summer. He always helped me when I had questions, either by answering them, or by pointing me in the right direction. I don't think I could've had a better mentor.

Respectfully,

Alan Alvarez
SGT, USA
_______________________________________________
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