00001
00017 #ifndef __RECURRENCE_RULE_H__
00018 #define __RECURRENCE_RULE_H__
00019
00020
00021 #include<libical/ical.h>
00022 #include<vector>
00023 #include <string>
00024 using std::string;
00025 using std::vector;
00026
00027
00028 typedef enum FREQUENCY {
00029
00030 SECONDLY_RECURRENCE = 0,
00031 MINUTELY_RECURRENCE = 1,
00032 HOURLY_RECURRENCE = 2,
00033 DAILY_RECURRENCE = 3,
00034 WEEKLY_RECURRENCE = 4,
00035 MONTHLY_RECURRENCE = 5,
00036 YEARLY_RECURRENCE = 6,
00037 NO_RECURRENCE = 7
00038 };
00039
00040 typedef enum {
00041 SUNDAY = 0,
00042 MONDAY,
00043 TUESDAY,
00044 WEDNESDAY,
00045 THURSDAY,
00046 FRIDAY,
00047 SATURDAY
00048 } WeekDay;
00049
00050 typedef enum {
00051 RECURRENCE_RULE = 0,
00052 EXCEPTION_RULE
00053 } RuleType;
00054
00059 class CRecurrenceRule {
00060
00061 public:
00062
00066 CRecurrenceRule(CRecurrenceRule & ref);
00067
00071 CRecurrenceRule & operator=(CRecurrenceRule & right);
00072
00076 CRecurrenceRule();
00077
00081 ~CRecurrenceRule();
00082
00090 bool setRuleType(RuleType iType);
00091
00100 RuleType getRuleType();
00101
00112 bool rruleParser(string szRule);
00113
00120 bool setRrule(string szRRule);
00121
00128 string getRrule();
00129
00137 bool setFrequency(FREQUENCY iValue);
00138
00145 FREQUENCY getFrequency();
00146
00153 bool setUntil(time_t iUntil);
00154
00161 time_t getUntil();
00162
00169 bool setCount(int iCount);
00170
00177 int getCount();
00178
00186 bool setSecond(vector < short > vSec);
00187
00195 vector < short >getSecond();
00196
00205 bool setMinute(vector < short > vMinute);
00206
00214 vector < short >getMinute();
00215
00223 bool setHour(vector < short > vHour);
00224
00232 vector < short >getHour();
00233
00242 bool setWeekDay(vector < short > vByWeekDay);
00243
00252 vector < short >getWeekDay();
00253
00260 bool setMonthDay(vector < short > vByMonthDay);
00261
00268 vector < short >getMonthDay();
00269
00277 bool setYearDay(vector < short > vByYearDay);
00278
00285 vector < short >getYearDay();
00286
00294 bool setWeekNumber(vector < short > vByWeekNumber);
00295
00303 vector < short >getWeekNumber();
00304
00312 bool setMonth(vector < short > vMonth);
00313
00321 vector < short >getMonth();
00322
00338 bool setPos(vector < short > vPosition);
00339
00346 vector < short >getPos();
00347
00364 bool setWeekStart(icalrecurrencetype_weekday start);
00365
00373 icalrecurrencetype_weekday getWeekStart();
00374
00380 bool setInterval(short interval);
00381
00389 short getInterval();
00390
00395 CRecurrenceRule(int iType, string szRRule);
00396
00397 private:
00405 vector < short > convertArrayToVector(short array[], int iLengthMax);
00406
00407 FREQUENCY iFreq;
00409 string szRule;
00411 int iCount;
00413 short interval;
00415 time_t iUntil;
00417 RuleType iType;
00427 icalrecurrencetype_weekday weekStart;
00428
00429
00430
00431
00432
00433 vector < short >vBySecond;
00435 vector < short >vByMinute;
00437 vector < short >vByHour;
00439 vector < short >vByWeekDay;
00441 vector < short >vByMonthDay;
00443 vector < short >vByYearDay;
00445 vector < short >vByWeekNumber;
00447 vector < short >vByMonth;
00449 vector < short >vBySetPos;
00450 };
00451
00452 #endif