00001
00021 #ifndef _COMMON_H__
00022 #define _COMMON_H__
00023
00024 #include <vector>
00025 #include <algorithm>
00026 #include <list>
00027 #include <string>
00028 #include <iostream>
00029 #include <sqlite3.h>
00030 #include <assert.h>
00031 #include "CMulticalendar.h"
00032 #include "DbCalls.h"
00033 #include "CCalendar.h"
00034 #include "CCalendarDB.h"
00035 #include "CComponent.h"
00036 #include "CComponentDetails.h"
00037 #include "CEvent.h"
00038 #include "CTodo.h"
00039 #include "CJournal.h"
00040 #include "CRecurrence.h"
00041 #include "CalendarLog.h"
00042 #include "CParameters.h"
00043 #include <clockd/libtime.h>
00044 using namespace std;
00045 using std::vector;
00046 using std::string;
00047
00048
00051
00052 const char DEFAULT_CALENDAR[] = "Private";
00053 const char SYNCHRONIZED_CALENDAR[] = "Synchronized";
00054 const char OPAQUE[] = "OPAQUE";
00055 const char TRANSPERANCY[] = "TRANSPARENT";
00056 const char BEGIN[] = "begin";
00057 const char END[] = "end";
00058 const char MAXID[] = "MaxId";
00059 const char CALAPP[] = "CALENDAR-UI";
00062 const char BEGIN_EVENT[] = "BEGIN:VEVENT";
00063 const char END_EVENT[] = "END:VEVENT";
00064 const char BEGIN_TODO[] = "BEGIN:VTODO";
00065 const char END_TODO[] = "END:VTODO";
00066 const char BEGIN_JOURNAL[] = "BEGIN:VJOURNAL";
00067 const char END_JOURNAL[] = "END:VJOURNAL";
00068 const char BEGIN_CALENDAR[] = "BEGIN:VCALENDAR";
00069 const char END_CALENDAR[] = "END:VCALENDAR";
00070 const char BEGIN_ALARM[] = "BEGIN:VALARM";
00071 const char END_ALARM[] = "END:VALARM";
00072 const char ICS_DEFAULT_CALENDAR_NAME[] = "imported calendar-%";
00073 const char ICS_CALNAME_SEPERATOR[] = "-";
00074 const char ICS_FILENAME_SEPERATOR[] = "file://";
00075 const char V_EVENT[] = "VEVENT";
00076 const char V_TODO[] = "VTODO";
00077 const char VJOURNAL[] = "VJOURNAL";
00078 const char RDATE[] = "RDATE";
00079 const char EXDATE[] = "EXDATE";
00080 const char RDATE_COL[] = "RDATE:";
00081 const char EXDATE_COL[] = "EXDATE:";
00082 const char RRULE[] = "RRULE";
00083 const char EXRULE[] = "EXRULE";
00084 const char RRULE_COL[] = "RRULE:";
00085 const char EXRULE_COL[] = "EXRULE:";
00086 const char A_ALARM[] = "AALARM";
00087 const char DAILY[] = "DAILY";
00088 const char WEEKLY[] = "WEEKLY";
00089 const char MONTHLY[] = "MONTHLY";
00090 const char YEARLY[] = "YEARLY";
00091 const char WEEKDAY[] = "WEEKLY;BYDAY=MO,TU,WE,TH,FR";
00092 const char UNTIL_ICAL[] = "UNTIL=";
00093 const char PUBLIC[] = "PUBLIC";
00094 const char PRIVATE[] = "PRIVATE";
00095 const char CONFIDENTIAL[] = "CONFIDENTIAL";
00096 const char ALTREP[] = "ALTREP=";
00097 const char DOUBLE_QUOTE[] = "\"";
00098 const char LANG[] = "LANGUAGE=";
00099
00102 const char DCREATED[] = "DCREATED:";
00103 const char RSVP_YES[] = "RSVP=YES";
00104 const char RSVP_NO[] = "RSVP=NO";
00105 const char PARTSTAT_SENT[] = "STATUS=SENT";
00106 const char PARTSTAT_CONFIRMED[] = "STATUS=CONFIRMED";
00107 const char STATUS_SENT[] = "STATUS:SENT";
00108 const char STATUS_DECLINED[] = "STATUS:DECLINED";
00109 const char STATUS_DELEGATED[] = "STATUS:DELEGATED";
00110 const char STATUS_ACCEPTED[] = "STATUS:ACCEPTED";
00111 const char STATUS_NEEDS_ACTION[] = "STATUS:NEEDS ACTION";
00112 const char STATUS_CONFIRMED[] = "STATUS:CONFIRMED";
00113 const char STATUS_TENTATIVE[] = "STATUS:TENTATIVE";
00114 const char STATUS_COMPLETED[] = "STATUS:COMPLETED";
00115 const char ROLE_ATTENDEE[] = "ROLE=ATTENDEE";
00116 const char ROLE_ORGANIZER[] = "ROLE=ORGANIZER";
00117 const char ROLE_OWNER[] = "ROLE=OWNER";
00118 const char ROLE_DELEGATE[] = "ROLE=DELEGATE";
00119 const char EXPECT[] = "EXPECT=";
00120 const char TRANSP_ZERO[] = "TRANSP:0";
00121 const char TRANSP_ONE[] = "TRANSP:1";
00122 const char TRANSP_GT_ONE[] = "TRANSP:>1";
00123 const char MON_DAY[] = "MO";
00124 const char TUES_DAY[] = "TU";
00125 const char WEDNES_DAY[] = "WE";
00126 const char THURS_DAY[] = "TH";
00127 const char FRI_DAY[] = "FR";
00128 const char SATUR_DAY[] = "SA";
00129 const char COMMA[] = ",";
00130 const char HYPHEN[] = "-";
00131 const char PLUS[] = "+";
00132 const char HASH[] = "#";
00133 const char SUN_DAY[] = "SU";
00134 const char COUNT_VCAL[] = ";COUNT=";
00135 const char UNTIL_VCAL[] = ";UNTIL=";
00136 const char FREQ_DAILY[] = "FREQ=DAILY";
00137 const char FREQ_WEEKLY[] = "FREQ=WEEKLY";
00138 const char FREQ_MONTHLY[] = "FREQ=MONTHLY";
00139 const char FREQ_YEARLY[] = "FREQ=YEARLY";
00140 const char INTERVAL_VCAL[] = ";INTERVAL=";
00141 const char BY_MONTH_VCAL[] = ";BYMONTH=";
00142 const char BY_MONTHDAY_VCAL[] = ";BYMONTHDAY=";
00143 const char BY_DAY_VCAL[] = ";BYDAY=";
00144 const char WKSTRT_SU_VCAL[] = ";WKST=SU";
00145 const char UNTIL[] = "UNTIL";
00146 const char COUNT[] = "COUNT";
00147 const char FREQUENCY[] = "FREQ";
00148 const char INTERVAL[] = "INTERVAL";
00149 const char BY_DAY[] = "BYDAY";
00150 const char BY_MONTHDAY[] = "BYMONTHDAY";
00151 const char BY_MONTH[] = "BYMONTH";
00152 const char TZID[] = "TZID";
00153 const char PERIOD[] = "PERIOD";
00154 const char DATE[] = "DATE";
00155 const char DURATION[] = "DURATION";
00156 const char REPEAT[] = "REPEAT";
00157 const char ACTION_AUDIO[] = "ACTION:AUDIO";
00158 const char DURATION_COL[] = "DURATION:";
00159 const char REPEAT_COL[] = "REPEAT:";
00160 const char DALARM[] = "DALARM";
00161 const char PALARM[] = "PALARM";
00162 const char M[] = "M";
00163 const char P[] = "P";
00164 const char Y[]= "Y";
00165 const char D[] = "D";
00166 const char W[] = "W";
00167 const char HASH_ZERO[] = "#0";
00168 const char TIMEZONE[] = "T000000Z";
00169 const char TRIGGER_VALUE_DATE_TIME[] = "TRIGGER;VALUE=DATE-TIME:";
00170 const char ALARM_TYPE_WAVE_VALUE[] = "AALARM;TYPE=WAVE;VALUE=CONTENT-ID:";
00171 const char AUDIO_ALARM_DELIMITER[] = ":=;,";
00172 const char DATE_DELIMITER[] = ":=;,/";
00173 const char VCALRULE_DELIMITER[] = ":=;,";
00174 const char ZEROSEMI[] = "0;";
00175 const int ZEROSEC = 0;
00176 const int THREEOOSEC = 300;
00177 const int NINEOOSEC = 900;
00178 const int HALFHOUR = 1800;
00179 const int ONEHOUR = 3600;
00180 const int THREEHOUR = 10800;
00181 const int ONEDAY = 86400;
00182 const int HALFDAY = 43200;
00183 const int TENSEVEN = 17;
00184 const int THREE = 3;
00185 const int EIGHT = 8;
00186 const int MAX_ALARM_TIME = 9;
00187 const int altime[MAX_ALARM_TIME] = { ZEROSEC,
00188 ZEROSEC,
00189 THREEOOSEC,
00190 NINEOOSEC,
00191 HALFHOUR ,
00192 ONEHOUR,
00193 THREEHOUR ,
00194 ONEDAY ,
00195 HALFDAY
00196 };
00197
00200 const int ZERO = 0;
00201 const int ONE = 1;
00202 const int HUNDRED = 100;
00203 const int NINETEEN_HUNDRED = 1900;
00204 const int NINE = 9;
00205 const int EXTERNAL_ENTRY = 8;
00206 const int SUCCESS = 1;
00207 const int FAILURE = 0;
00208 const int NULLID = -1;
00209 const int MAX_ENTRIES = 100;
00210 const int MAX_ENTRY_COL = 10;
00211 const int MAX_JOUR_COL = 7;
00212 const int MAX_TODO_COL = 13;
00213 const int MAX_APRIM_COL = 7;
00214 const int MAX_ORZER_COL = 6;
00215 const int MAXSIZE = 32;
00216 const int MACLENGTH = 18;
00217 const int MAX_RECUR = 6;
00218 const int ADDRESSLENGTH = 6;
00219 const int HEX_252 = 0xfc;
00220 const int HEX_3 = 0x03;
00221 const int HEX_240 = 0xf0;
00222 const int HEX_15 = 0x0f;
00223 const int HEX_192 = 0xc0;
00224 const int HEX_63 = 0x3f;
00227 const int DEFAULT_ICS_CALNAME_LENGTH = 15;
00228 const int ICS_FILENAME_SEPERATOR_LENGTH = 6;
00229 const int ALARM_DUR_DIFF1 = 600;
00230 const int ALARM_DUR_DIFF2 = 1350;
00231 const int ALARM_DUR_DIFF3 = 2700;
00232 const int ALARM_DUR_DIFF4 = 7200;
00233 const int SEC_IN_HR = 3600;
00234
00237 const char DESCRIPTION[] = "DESCRIPTION";
00238 const char SUMMARY[] = "SUMMARY";
00239 const char RESOURCES[] = "RESOURCES";
00240 const char CATEGORIES[] = "CATEGORIES";
00241 const char ATTDEE[] = "ATTEND";
00242 const char ORGZER[] = "ORGNI";
00243 const char ATTACH[] = "ATTACH";
00244 const char ATTACH_ALARM[] = "ATTACH;FMTTYPE=audio/basic:";
00247 const char RELATEDTO[] = "RELATED-TO";
00248 const char COMMENT[] = "COMMENT";
00249 const char LOCATION[] = "LOCATION";
00250 const char CONTACT[] = "CONTACT";
00251
00252 const char LANGUAGE[] = "LANGUAGE";
00253 const char ALTER[] = "ALTER";
00254 const char RELTYPE[] = "RELTYPE";
00255 const char FMTYPE[] = "FMTYPE";
00256
00257 const char SENT[] = "SENTBY";
00258 const char CNAME[] = "CNAME";
00259 const char DIRPAR[] = "DIRPARAM";
00260 const char GNMAILTO[] = "MAILTO";
00261 const char ATCUTYPE[] = "CUTYPE";
00262 const char ATMEMBER[] = "MEMBER";
00263 const char ATROLE[] = "ROLE";
00264 const char ATPSTAT[] = "PSTAT";
00265 const char ATRSVP[] = "RSVP";
00266 const char ATDELEGATEES[] = "DELEGATEES";
00267 const char ATDELEGATOR[] = "DELEGATOR";
00271 const char COMMIT[] = "commit";
00272 const char ROLLBACK[] = "rollback";
00276 #define ASSERTION(X) assert(X);
00277
00281 typedef enum {
00282 CNPARAM = 0,
00283 DIRPARAM,
00284 SENTBYPARAM,
00285 ORGLANGUAGE
00286 }OrganizerParms;
00287
00288 typedef enum {
00289 CALENDAR_USER_TYPE = 0,
00290 MEMBER ,
00291 ROLE,
00292 PART_STATUS,
00293 RSVP,
00294 DELEGATEES,
00295 DELEGATOR,
00296 SENTBY,
00297 COMMON_NAME,
00298 DIR_PARAM,
00299 ATTLANGUAGE,
00300 MAILTO
00301 } AttendeeParms;
00302
00303 typedef enum DATATYPE{
00304 STRING = 0,
00305 INTEGER,
00306 FLOAT,
00307 BOOL,
00308 NONE_TYPE
00309 };
00310
00311 enum EntryType{
00312 ALL_ENTRIES = 0,
00313 EVENT,
00314 TODO,
00315 JOURNAL,
00316 BIRTHDAY
00317 };
00318
00319 enum OPTION_TYPE {
00320
00321 HAS_ATTENDEE = 1,
00322 HAS_ORGANIZER,
00323 HAS_RECURRENCE,
00324 HAS_ALARM,
00325 HAS_RECURRENCE_ALARM,
00326 HAS_PARTICIPANT,
00327 HAS_CATEGORIES,
00328 HAS_COMMENT,
00329 HAS_EXTRA
00330 };
00331
00332 enum RecurrencType{
00333 E_NONE =0 ,
00334 E_DAILY,
00335 E_WEEKDAY,
00336 E_WEEKLY,
00337 E_MONTHLY,
00338 E_YEARLY,
00339 E_COMPLEX
00340 };
00341
00342 enum entryType {
00343 E_CALENDAR = 0,
00344 E_EVENT,
00345 E_TODO,
00346 E_JOURNAL,
00347 E_BDAY,
00348 E_SPARE
00349 };
00350
00351 enum columnId {
00352 DB_COLUMN_ID1 = 0,
00353 DB_COLUMN_ID2,
00354 DB_COLUMN_ID3,
00355 DB_COLUMN_ID4,
00356 DB_COLUMN_ID5,
00357 DB_COLUMN_ID6,
00358 DB_COLUMN_ID7,
00359 DB_COLUMN_ID8,
00360 DB_COLUMN_ID9,
00361 DB_COLUMN_ID10,
00362 DB_COLUMN_ID11,
00363 DB_COLUMN_ID12,
00364 DB_COLUMN_ID13,
00365 DB_COLUMN_ID14,
00366 DB_COLUMN_ID15,
00367 DB_COLUMN_ID16,
00368 DB_COLUMN_ID17,
00369 DB_COLUMN_ID18,
00370 DB_COLUMN_ID19,
00371 DB_COLUMN_ID20,
00372 DB_COLUMN_ID21,
00373 DB_COLUMN_ID22,
00374 DB_COLUMN_ID23,
00375 DB_COLUMN_ID24,
00376 DB_COLUMN_ID25,
00377 DB_COLUMN_ID26,
00378 DB_COLUMN_ID27,
00379 DB_COLUMN_ID28,
00380 DB_COLUMN_ID29,
00381 DB_COLUMN_ID30,
00382 DB_COLUMN_ID31,
00383 DB_COLUMN_ID32,
00384 DB_COLUMN_ID33,
00385 DB_COLUMN_ID34,
00386 DB_COLUMN_ID35
00387 };
00388
00389 enum DaysOfWeek
00390 {
00391 Sunday = 1,
00392 Monday = 2,
00393 Tuesday = 4,
00394 Wednesday = 8,
00395 Thursday = 16,
00396 Friday = 32,
00397 Saturday = 64
00398 };
00399
00400 enum RecurrenceType
00401 {
00402 RecursSecondly = 0,
00403 RecursMinutely ,
00404 RecursHourly ,
00405 RecursDaily ,
00406 RecursWeekly ,
00407 RecursMonthly ,
00408 RecursMonthNth ,
00409 RecursYearly ,
00410 RecursYearNth
00411 };
00412
00413 typedef struct {
00414 RecurrenceType freq;
00415 char* interval;
00416 char* modifier;
00417 char* duration;
00418 }RecurrenceItem;
00419
00420 #endif