]> www.infradead.org Git - users/dwmw2/ews-sync.git/commitdiff
Attempt to handle reminders
authorDavid Woodhouse <dwmw2@infradead.org>
Mon, 19 Jul 2010 00:16:36 +0000 (01:16 +0100)
committerDavid Woodhouse <dwmw2@infradead.org>
Mon, 19 Jul 2010 00:16:36 +0000 (01:16 +0100)
ews2ical.c

index aa5838b5eabf62c5fb9199963e0aa2fe25cb2b1d..7ab05c6978312b57a42c3001395430a62e5067e7 100644 (file)
@@ -33,6 +33,7 @@ int process_body(icalcomponent *comp, xmlNode *xml_node);
 int process_subject(icalcomponent *comp, xmlNode *xml_node);
 int process_recurrence(icalcomponent *comp, xmlNode *xml_node);
 int process_itemid(icalcomponent *comp, xmlNode *xmlnode);
+int process_reminder_mins(icalcomponent *comp, xmlNode *xmlnode);
 icaltimezone *get_timezone(xmlNode *xmlnode);
 icaltimezone *get_meeting_timezone(xmlNode *xml_node);
 
@@ -192,9 +193,36 @@ icalcomponent *ews_calitem_to_ical(xmlNode *xml_node)
                        process_recurrence(comp, xml_node);
                else if (!strcmp((char *)xml_node->name, "ItemId"))
                        process_itemid(comp, xml_node);
+               else if (!strcmp((char *)xml_node->name, "ReminderMinutesBeforeStart"))
+                       process_reminder_mins(comp, xml_node);
+               else if (!strcmp((char *)xml_node->name, "ParentFolderId") ||
+                        !strcmp((char *)xml_node->name, "DateTimeReceived") ||
+                        !strcmp((char *)xml_node->name, "Size") ||
+                        !strcmp((char *)xml_node->name, "IsSubmitted") ||
+                        !strcmp((char *)xml_node->name, "IsDraft") ||
+                        !strcmp((char *)xml_node->name, "IsFromMe") ||
+                        !strcmp((char *)xml_node->name, "IsResend") ||
+                        !strcmp((char *)xml_node->name, "IsUnmodified") ||
+                        !strcmp((char *)xml_node->name, "DateTimeSent") ||
+                        !strcmp((char *)xml_node->name, "DateTimeCreated") ||
+                        !strcmp((char *)xml_node->name, "ResponseObjects") ||
+                        !strcmp((char *)xml_node->name, "DisplayCc") ||
+                        !strcmp((char *)xml_node->name, "DisplayTo") ||
+                        !strcmp((char *)xml_node->name, "Culture") ||
+                        !strcmp((char *)xml_node->name, "IsRecurring") ||
+                        !strcmp((char *)xml_node->name, "MeetingRequestWasSent") ||
+                        !strcmp((char *)xml_node->name, "IsResponseRequested") ||
+                        !strcmp((char *)xml_node->name, "MyResponseType") ||
+                        !strcmp((char *)xml_node->name, "ConflictingMeetingCount") ||
+                        !strcmp((char *)xml_node->name, "AdjacentMeetingCount") ||
+                        !strcmp((char *)xml_node->name, "TimeZone") ||
+                        !strcmp((char *)xml_node->name, "AppointmentSequenceNumber") ||
+                        !strcmp((char *)xml_node->name, "AppointmentState")) {
+                                /* Ignore these */
+               }
 #if 0
-               else
-                       fprintf(stderr, "Unhandled node type '%s'\n", xml_node->name);
+       else
+               fprintf(stderr, "Unhandled node type '%s'\n", xml_node->name);
 #endif
        }
        icalcomponent_add_component(calcomp, comp);
@@ -525,6 +553,32 @@ int process_itemid(icalcomponent *comp, xmlNode *xml_node)
        icalcomponent_set_uid(comp, id);
        return 0;
 }
+int process_reminder_mins(icalcomponent *calcomp, xmlNode *xml_node)
+{
+       const char *minutes;
+       int minutesnr;
+       icalcomponent *comp;
+       icalproperty *prop;
+       struct icaltriggertype trig;
+
+       minutes = (char *)xmlNodeGetContent(xml_node);
+       if (!minutes)
+               return -1;
+
+       minutesnr = strtol(minutes, NULL, 10);
+       
+       comp = icalcomponent_new_valarm();
+       prop = icalproperty_new_action(ICAL_ACTION_DISPLAY);
+       icalcomponent_add_property(comp, prop);
+       prop = icalproperty_new_description("REMINDER");
+       icalcomponent_add_property(comp, prop);
+       trig = icaltriggertype_from_int(-minutesnr * 60);
+       prop = icalproperty_new_trigger(trig);
+       icalcomponent_add_property(comp, prop);
+
+       icalcomponent_add_component(calcomp, comp);
+       return 0;
+}
 
 static const char *ews_tz_to_ical(const char *ewstz)
 {