Re: [Evolution-hackers] Appointment and Meeting Editors -- 2.0 Thoughts



On Thu, 2003-10-02 at 10:42, Anna Marie Dirks wrote:

> So it sounds to me like what you are telling me is that if you could use
> the "To Do" (or "Tasks") part of Evolution to help you remember and plan
> your speaking engagements, then you would. Is that right? 
> 
> Besides alarms, is there anything else that the appointment editor
> provides to you that the task editor doesn't, which you need to help you
> plan a speaking engagement? 

I don't think we support alarms for tasks, and they would certainly be
useful.

RFC 2445 says that VTODO components can have a DTSTART property, and
either a DUE or DURATION property --- no DTEND.  The DUE or DURATION of
course let you figure out the "end" date for the task.  Say you create a
task to remind you to submit an abstract for a conference.  You could
then specify:

	SUMMARY: Write abstract for FooConference	
	DTSTART: <blah>  <-- date the call-for-papers was sent
	DUE: <blah>      <-- drop-dead date

It would be useful to set an alarm that repeats each week, starting a
few weeks before the due date.  A three-week reminder would look like

	BEGIN:VALARM
	TRIGGER;RELATED=END:-P3W
	REPEAT:2
	DURATION:P1W
	...
	END:VALARM

The "RELATED=END" is important, as it specifies that the alarm is with
respect to the due date.

I don't think the recurrence engine handles VTODO components yet, but it
would be simple to add.  It can already pick up the DTSTART, as VEVENT
components also have it, but it doesn't know that there is no DTEND in
tasks --- you need to use the DUE date, or compute it as DTSTART plus
DURATION.

See calendar/util/cal-util.c:add_alarm_occurrences_cb().  It gets an
occurrence's end time from cal_recur_generate_instances(), which uses
cal_component_get_dtend() in its innards.  The latter will give you the
actual DTEND value, or (DTSTART + DURATION) if there is no DTEND
property.  This would work fine for tasks with DTSTART and DURATION, but
not for those with DUE.

I guess it is just cal-recur.c that needs to be modified to use DUE
rather than DTEND or (DTSTART + DURATION), or perhaps
cal_component_get_dtend() could be generalized to return DUE for tasks.

  Federico




[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]