Summary: | KCal does not properly submit STATUS Information to Akonadi | ||
---|---|---|---|
Product: | [Applications] kdepimlibs | Reporter: | hyper_ch <bugs.kde.org3> |
Component: | kcalcore | Assignee: | kdepim bugs <kdepim-bugs> |
Status: | RESOLVED UNMAINTAINED | ||
Severity: | normal | CC: | krammer, reinhold, smartins, winter |
Priority: | NOR | ||
Version: | 4.3 | ||
Target Milestone: | --- | ||
Platform: | Ubuntu | ||
OS: | Unspecified | ||
Latest Commit: | Version Fixed In: | ||
Sentry Crash Report: |
Description
hyper_ch
2009-11-30 14:23:40 UTC
With a little help I dug further into the problem. First I verified RFC 2445 and found this here: RFC 2445, p. 88: Dawson & Stenerson Standards Track [Page 88] RFC 2445 iCalendar November 1998 statvalue =/ "NEEDS-ACTION" ;Indicates to-do needs action. / "COMPLETED" ;Indicates to-do completed. / "IN-PROCESS" ;Indicates to-do in process of / "CANCELLED" ;Indicates to-do was cancelled. ;Status values for "VTODO". statvalue =/ "DRAFT" ;Indicates journal is draft. / "FINAL" ;Indicates journal is final. / "CANCELLED" ;Indicates journal is removed. ;Status values for "VJOURNAL". Example: The following is an example of this property for a "VEVENT" calendar component: STATUS:TENTATIVE The following is an example of this property for a "VTODO" calendar component: STATUS:NEEDS-ACTION The following is an example of this property for a "VJOURNAL" calendar component: STATUS:DRAFT So, that seems that a STATUS field is required in the ical files. ----------------- Then I checked the horde entries. I copied one below and replaced email and subject: BEGIN:VTODO UID:libkcal-2078158521.175 ORGANIZER:MAILTO:my@email.com SUMMARY:just some boring text PRIORITY:2 DUE:20091120T120000Z STATUS:COMPLETED COMPLETED:20100112T125449Z CATEGORIES:MISCELLANEOUS CREATED:20091110T085606Z LAST-MODIFIED:20091123T172054Z END:VTODO That looks RFC compliant to me with regard to the completion of a task. ---------- Next I check how korganizer / kcal handle that. First I created a new calendar in korganizer (-> Setting it as ical (local file)). Then I went into the todo list, created an entry and marked it as completed. The output is below: BEGIN:VCALENDAR PRODID:-//K Desktop Environment//NONSGML libkcal 4.3//EN VERSION:2.0 BEGIN:VTODO DTSTAMP:20100112T124208Z ORGANIZER;CN="you wish":MAILTO:some email address CREATED:20100112T124202Z UID:libkcal-1626628246.613 SEQUENCE:1 LAST-MODIFIED:20100112T124208Z SUMMARY:asdfasdfasdfasdfasdfasdfasdfasfdasf PRIORITY:5 DUE;VALUE=DATE:20100119 COMPLETED:20100112T124208Z PERCENT-COMPLETE:100 END:VTODO END:VCALENDAR Then I also created a new akonadi resource, selected "ICal Calendar file (locally)" and created again a new entry in the todo list and marked it as completed. BEGIN:VCALENDAR PRODID:-//K Desktop Environment//NONSGML libkcal 4.3//EN VERSION:2.0 BEGIN:VTODO DTSTAMP:20100112T125120Z ORGANIZER;CN="you wish":MAILTO:some email address CREATED:20100112T124843Z UID:libkcal-793896051.397 SEQUENCE:1 LAST-MODIFIED:20100112T125120Z SUMMARY:cal_test3.ical PRIORITY:5 DUE;VALUE=DATE:20100119 COMPLETED:20100112T125120Z PERCENT-COMPLETE:100 END:VTODO END:VCALENDAR Both entries created in Kontact do not have the STATUS field in them which seems to be the cause for all the problems. I also run now following tests on a local ical file: (1) I created it and marked it as completed --> no STATUS field was added (2) I closed kontact and manually added STATUS:COMPLETED --> The task still showed as completed... editing and saving it again did not remove the STATUS:COMPLETED field (3) I closed kontact again and manually deleted the PERCENT-COMPLETE:100 field --> Again, Korgainzed showed the task as completed Looks like the problem is in ICalFormatImpl::writeTodo() in icalformat_p.cpp It checks for Todo::isCompleted() but only writes the completion date to the ical structure and does not yet set the status. AFAICS, the RFCs (2445 and 5545) do not specify how exactly completion should be indicated... My comment on IRC: [14:39] <reinhold> hyper_ch: Regarding your STATUS:COMPLETED vs. PERCENT-COMPLETE:100, the rfcs 2445 and 5545 (the successor to RFC 2445) do not require STATUS:COMPLETED to be set. Actually, it does not specify at all how completion should be indicated. There are three completion settings: STATUS:COMPLETED, COMPLETED:Date-Time, PERCENT-COMPLETE:100 [14:41] <reinhold> hyper_ch: Actually, the example at the end of section 3.6.2 shows a completed todo with STATUS:NEEDS-ACTION... See http://pastebin.org/75500 [14:41] <reinhold> hyper_ch: That might be an oversight, though. I've now also sent a request for clarification to the calsify mailing list: http://lists.osafoundation.org/pipermail/ietf-calsify/2010-January/002234.html Any news on this? The problem I face right now is that the Horde people say it's Akonadi's fault. They don't do it correctly. And the Akonadi people say it's Horde's fault. They don't do it correctly. In the end the result is, that it just doesn't work because neither party is willing to go one step ahead and make it work. If the incidence's status field is set to something other than NONE, it will be written out in ICalFormatImpl::writeIncidence(). So I don't think we need to muck around in KCalCore. We need to go into KOrganizer and set a to-do's status value as COMPLETED vs NEEDS-ACTION as necessary. Now, on reading a to-do .. I expect to see a completion percentage and will only agree to setting a to-do as DONE if that percentage is 100; i.e. the status won't affect completeness on read. I'm ok with doing this. However I don't agree with Horde: they could check for 100% completion too -- this must be how everyone checks for to-do completeness else how come nobody else has bitched about this for so many years? This bug has only been reported for versions before 4.14, which have been unsupported for at least two years now. Can anyone tell if this bug still present? If noone confirms this bug for a Framework-based version of kdepim (version 5.0 or later, as part of KDE Applications 15.08 or later), it gets closed in about three months. Just as announced in my last comment, I close this bug. If you encounter it again in a recent version (at least 5.0 aka 15.08), please open a new one unless it already exists. Thank you for all your input. |