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