00001
00020 #ifndef INCL_VIRTUAL_CALENDAR_CONVERTER
00021 #define INCL_VIRTUAL_CALENDAR_CONVERTER
00022
00024 #include "base/fscapi.h"
00025 #include "vocl/iCalendar/Calendar.h"
00026 #include "vocl/VConverter.h"
00027
00028 class WString;
00029
00030 #define EVENT_PROPERTIES_LIST TEXT("BEGIN,CLASS,CREATED,DESCRIPTION,DTSTART,GEO,LAST-MODIFIED,LOCATION,ORGANIZER,PRIORITY,") \
00031 TEXT("DTSTAMP,SEQUENCE,STATUS,SUMMARY,TRANSP,UID,URL,RECURRENCE-ID,DTEND,DURATION,ATTACH,ATTENDEE,") \
00032 TEXT("CATEGORIES,COMMENT,CONTACT,EXDATE,EXRULE,REQUEST-STATUS,RELATED,RESOURCES,RDATE,RRULE,END,GROUP")
00033
00034 #define TODO_PROPERTIES_LIST TEXT("BEGIN,CLASS,COMPLETED,CREATED,DESCRIPTION,DTSTAMP,DTSTART,GEO,LAST-MODIFIED,LOCATION,ORGANIZER,PERCENT-COMPLETE,") \
00035 TEXT("PRIORITY,RECURRENCE-ID,SEQUENCE,STATUS,SUMMARY,UID,URL,DUE,DURATION,ATTACH,ATTENDEE,") \
00036 TEXT("CATEGORIES,COMMENT,CONTACT,EXDATE,EXRULE,REQUEST-STATUS,RELATED,RESOURCES,RDATE,RRULE,END,GROUP")
00037
00038 #define CLASS_PROPERTY_VALUE TEXT("PUBLIC,PRIVATE,CONFIDENTIAL")
00039
00040 #define COMMENT_PARAM_LIST TEXT("ALTREP,LANGUAGE")
00041 #define DT_PARAM_LIST TEXT("VALUE,TZID")
00042 #define ORGANIZER_PARAM_LIST TEXT("CN,DIR,SENT-BY,LANGUAGE,ROLE")
00043 #define ATTACH_PARAM_LIST TEXT("FMTTYPE,ENCODING,VALUE")
00044 #define ATTENDEE_PARAM_LIST TEXT("CUTYPE,MEMBER,ROLE,PARTSTAT,RSVP,DELEGATED-TO,DELEGATED-FROM,SENT-BY,CN,DIR,LANGUAGE")
00045 #define RDATE_PARAM_LIST TEXT("VALUE,DATE-TIME,DATE,PERIOD,TZID")
00046 #define RECRUL_ITEMS_LIST TEXT("FREQ,UNTIL,COUNT,INTERVAL,BYSECOND,BYMINUTE,BYHOUR,BYDAY,BYMONTHDAY,BYYEARDAY,BYWEEKNO,BYMONTH,BYSETPOS,WKST")
00047 #define FREQUENCY_VALUES_LIST TEXT("SECONDLY,MINUTELY,HOURLY,DAILY,WEEKLY,MONTHLY,YEARLY")
00048
00049 #define ERROR_SUCCESS 0L
00050 #define ERROR_KEY_PROPERTY_MISSING 100L
00051 #define ERROR_ILLEGAL_VERSION_NUMBER 101L
00052 #define ERROR_ILLEGAL_PROPERTY_NAME 102L
00053 #define ERROR_UNSUPPORTED_ENCODING 103L
00054 #define ERROR_ILLEGAL_TYPE_PARAMETER 104L
00055 #define ERROR_ILLEGAL_PARAMETER 105L
00056 #define ERROR_INVALID_PROPERTY_VALUE 106L
00057 #define ERROR_PARSING_ERROR 200L
00058 #define ERROR_INVALID_EVENT_BLOCK 301L
00059 #define ERROR_INVALID_TODO_BLOCK 302L
00060
00061
00062
00063
00064 class iCalConverter {
00065 private:
00066 WCHAR* iCalendar;
00067 Calendar* calendar;
00068 bool validateEvent(Event*, WString& error, long* errorCode);
00069 bool validateTodo(ToDo*, WString& error, long* errorCode);
00070 bool validatePropery(VProperty*, WString& error, long* errorCode);
00071 Event* extractEvent(VObject* vo, WString& errorDescription, long* errorCode);
00072 ToDo* extractTask(VObject* vo, WString& errorDescription, long* errorCode);
00073 bool validateGeo(WCHAR* geo);
00074 bool validateDT(WCHAR* dt);
00075 bool validateDate(WCHAR* date);
00076 bool validateRecur(WCHAR* recur);
00077 void extractAlarm(VObject* vo);
00078
00079 public:
00080 iCalConverter();
00081 ~iCalConverter();
00082 void setSource(WCHAR* inputICalendar);
00083 void setSource(Calendar& inputCalendar);
00084 void getICalendar(WCHAR* vCard);
00085 void getCalendar(Calendar** outputContact);
00086 bool convert(WString& error, long* errorCode);
00087 };
00089 #endif