> Here's the idea I came up with so far.  Assume one main Tasks folder and
> one main Calendar folder.  Create two maildir folders for messages to
> transform, such as "appts-from-email" and "tasks-from-email".  Drag any
> emails you want into those folders.  Run my proposed script that reads
> the messages and converts them into vCal/iCal files (perhaps from a rule
> if possible or perhaps from cron every few minutes), and then import
> those into the appropriate Evolution folders.  For appointments, set
> them for the current hour, and then let the user move them to the
> appropriate day/time.

Of course, it would be cooler to make an app that creates a window or
panel applet or something, which you can drag messages to and it will
convert them directly. :)

> In Perl, I can handle (and have written) the part of reading the maildir
> folder and transforming the messages into iCal format (extract only the
> plain/text body, etc).  Here's where I am stuck: how do I get the iCal
> data into Evolution?

You can't do it easily directly from perl. You'll need to write a C
program and use libcalclient (and beware that you'll have to rewrite it
for Evolution 2.0 because the API will be changing).

The source is in calendar/cal-client/ in the evolution source tree.
There is some documentation in the source files in the form of
gtk-doc-style comments. Basically you'll want to use cal_client_new() to
create a CalClient object, then cal_client_open_default_calendar() or
cal_client_open_default_tasks() to open the default calendar or tasks
folder with that client object. Then use cal_client_update_object() to
create the new appointment/task.

Well, ok, so cal_client_update_object() takes a CalComponent, so you'll
need to use libcal-util as well. There's no function to directly create
a CalComponent from an ical string, so you'll need to first create an
icalcomponent (using icalcomponent_new_from_string() in libical) and
then call cal_component_set_icalcomponent(). Or you could just build up
the CalComponent using the cal_component_set_* functions instead of
creating an icalendar string.

The client-test.c code in calendar/cal-client has some code you can use
as a starting point.

-- Dan
_______________________________________________
evolution maillist  -  [EMAIL PROTECTED]
http://lists.ximian.com/mailman/listinfo/evolution

Reply via email to