vevent.h
00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022 #ifndef __BARRY_SYNC_VEVENT_H__
00023 #define __BARRY_SYNC_VEVENT_H__
00024
00025 #include "dll.h"
00026 #include "vbase.h"
00027 #include "vformat.h"
00028 #include "r_calendar.h"
00029 #include <stdint.h>
00030 #include <string>
00031
00032 namespace Barry { namespace Sync {
00033
00034
00035
00036
00037
00038
00039
00040 class vCalendar : public vBase
00041 {
00042
00043 vTimeConverter &m_vtc;
00044
00045
00046 char *m_gCalData;
00047
00048
00049 std::string m_vCalData;
00050 Barry::Calendar m_BarryCal;
00051
00052 static const char *WeekDays[7];
00053
00054 unsigned short GetMonthWeekNumFromBYDAY(const std::string& ByDay);
00055 unsigned short GetWeekDayIndexFromBYDAY(const std::string& ByDay);
00056
00057 protected:
00058 void RecurToVCal();
00059 void RecurToBarryCal(vAttr& rrule, time_t starttime);
00060
00061 static unsigned short GetWeekDayIndex(const char *dayname);
00062 bool HasMultipleVEvents() const;
00063
00064 public:
00065 explicit vCalendar(vTimeConverter &vtc);
00066 ~vCalendar();
00067
00068 const std::string& ToVCal(const Barry::Calendar &cal);
00069 const Barry::Calendar& ToBarry(const char *vcal, uint32_t RecordId);
00070
00071 const std::string& GetVCal() const { return m_vCalData; }
00072 const Barry::Calendar& GetBarryCal() const { return m_BarryCal; }
00073
00074 char* ExtractVCal();
00075
00076 void Clear();
00077 };
00078
00079 }}
00080
00081 #endif
00082