On Fri, 2003-10-03 at 19:38, Dan Winship wrote:
> > 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.
> 
Alan, you might want to look at
http://rodrigo.gnome-db.org/projects/tv-icalendar/tv-icalendar.c, which
is a hack I did very similar to what you want to do. In this case it
reads a XML file, so you should be able to change it easily to suit your
needs.

cheers

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

Reply via email to