00001
00016 #ifndef __CCALENDAR_H__
00017 #define __CCALENDAR_H__
00018 #include <map>
00019 #include <sqlite3.h>
00020 #include <string>
00021 #include <vector>
00022 using namespace std;
00023 using std::vector;
00024 using std::string;
00025
00026
00027 class CEvent;
00028 class CTodo;
00029 class CJournal;
00030 class CBdayEvent;
00031 class CProperties;
00032 class CCache;
00033 class CProperties;
00034 class CComponentDetails;
00035 class CRecurrence;
00036 class CAlarm;
00037 class CComponent;
00038 class CParameters;
00039 class CAttendee;
00040 class COrganizer;
00041 class CBdayEvent;
00042
00043
00044 const int SEC_IN_DAY = 86400;
00045 const int ATTACHMENTS = 2;
00046 const int RECURSIVE = 4;
00047 const int ATTENDEES = 6;
00048 const int ORGANIZER = 8;
00049
00050 enum ACTION {
00051 E_ADD = 0,
00052 E_MODIFY,
00053 E_DELETE
00054 };
00055
00056 enum CalendarColour {
00057 COLOUR_DARKBLUE = 0,
00058 COLOUR_DARKGREEN,
00059 COLOUR_DARKRED,
00060 COLOUR_ORANGE,
00061 COLOUR_VIOLET,
00062 COLOUR_YELLOW,
00063 COLOUR_WHITE,
00064 COLOUR_BLUE,
00065 COLOUR_RED,
00066 COLOUR_GREEN
00067 };
00068
00069 enum SyncProfileType{
00070 SYNC_METHOD_NONE=0,
00071 SYNC_METHOD_TWOWAY ,
00072 SYNC_METHOD_SEND,
00073 SYNC_METHOD_RECEIVE,
00074 SYNC_METHOD_WEB
00075 };
00076
00077 typedef enum {
00078 LOCAL_CALENDAR = 0,
00079 BIRTHDAY_CALENDAR,
00080 SYNC_CALENDAR,
00081 DEFAULT_PRIVATE,
00082 DEFAULT_SYNC
00083 } CalendarType;
00084
00085
00093 string intToString(int i);
00094
00095
00104 class CCalendar {
00105
00106 public:
00107
00108
00109
00110
00111 string getCacheEntry(time_t startDate, int &pErrorCode);
00112
00116 bool addCacheEntry(string sId, time_t startDate, int &pErrorCode);
00117
00118
00122 bool deleteCacheEntry(time_t startDate, int &pErrorCode);
00123
00127 int getCacheTableCount(time_t inputDate, int &pErrorCode);
00135 bool addCacheEntries(CComponent* pEntry, int &pErrorCode);
00136
00137
00138
00139
00140
00141 bool updateCacheEntry(string szId, time_t startDate, int &pErrorCode);
00142
00143
00144
00145
00146 bool appendToIds(string Id, string& szIds);
00147
00151 string removeFromIds(string Id, string szIdStrings);
00152
00157 bool deleteCacheEntries(string szId, int eEntry, int &pErrorCode);
00158
00162 bool modifyCacheEntry(CComponent* oldEntry, int &pErrorCode);
00166 void checkIfMultiDayEvent(CComponent* pEntry, vector <time_t> &vStartdates);
00167
00171 CCalendar(CCalendar & ref);
00172
00173
00177 const CCalendar & operator=(const CCalendar & right);
00178
00192 CCalendar(int iCalId, string szName, CalendarColour iColour, bool fIsReadOnly,
00193 bool fIsVisible, CalendarType iCalType ,string szCalendarTune);
00194
00208 CCalendar(string szName, CalendarColour iColour, bool fIsReadOnly,
00209 bool fIsVisible, CalendarType iCalType,string szCalendarTune,string szCalendarVersion);
00210
00221 vector < CComponent * > getAllEventsTodos( int iStDate, int iEndDate,
00222 int iLimit , int& iOffset,int& pErrorCode);
00223
00231 CCalendar();
00232
00246 bool setCalendarColor(CalendarColour iCalendarColor);
00247
00259 CalendarColour getCalendarColor();
00260
00268 bool setCalendarName(string szName);
00269
00276 string getCalendarName();
00277
00285 bool setCalendarId(int iId);
00286
00293 int getCalendarId();
00294
00295
00305 bool setCalendarType(CalendarType iCalType);
00312 void setProfileType(SyncProfileType iProfile);
00319 SyncProfileType getProfileType();
00320
00330 CalendarType getCalendarType();
00331
00338 bool setCalendarReadOnly(bool fIsReadOnly);
00339
00346 bool IsReadOnly();
00347
00354 bool setCalendarShown(bool fIsVisible);
00355
00362 bool IsShown();
00363
00374 bool modifyEvent(CEvent * pEvent,int &pErrorCode);
00375
00376
00385 bool modifyBirthDay(CBdayEvent *pBday,int& pErrorCode);
00386
00397 bool modifyJournal(CJournal * pJournal,int& pErrorCode);
00398
00409 bool modifyTodo(CTodo * pTodo,int& pErrorCode);
00410
00421 bool addEvent(CEvent * pEvent,int& pErrorCode);
00422
00423
00433 bool addBirthDay(CBdayEvent * pBday,int& pErrorCode);
00434
00445 bool addTodo(CTodo * ptrTodo,int& pErrorCode);
00446
00457 bool addJournal(CJournal * ptrJournal,int& pErrorCode);
00458
00468 bool deleteEvent(string sEventID,int& pErrorCode);
00469
00470
00478 bool deleteBirthDay(int iUid,int& pErrorCode);
00479
00489 bool deleteTodo(string sTodoID,int& pErrorCode);
00490
00499 bool deleteJournal(string sJournalID,int& pErrorCode);
00500
00508 void deleteComponent(string sId,int& pErrorCode);
00509
00518 vector < long > getCookie(string ietjId,int& pErrorCode);
00519
00526 string getCalendarVersion();
00527
00534 void setCalendarVersion(string szCalendarVersion);
00540 bool registerAlarmForVisibleCalendar( int& perrorCode);
00541
00550 ~CCalendar();
00560 vector<string> getIdList(int iCompType,int& pErrorCode);
00561
00573 CEvent *getEvent(string sComponentID,int& pErrorCode);
00574
00575
00587 CTodo *getTodo(string szComponentID,int& pErrorCode);
00588
00589
00601 CJournal *getJournal(string sComponentID,int& pErrorCode);
00611 bool checkDuplicateEntry(CComponent* pEntry,int iType , int& pErrorCode);
00612
00613
00622 vector < CEvent * >getDetailedEventList(int& pErrorCode);
00623
00624
00634 vector < CTodo * >getTodoListDetailed(int& pErrorCode);
00635
00636
00645 vector < CJournal * >getJournalListDetailed(int& pErrorCode);
00646
00647
00657 bool deleteBirthDay(string szUID,int& pErrorCode);
00658
00678 vector < CComponent * > getComponents(int iCalendarID,
00679 int iStartDate, int iEndDate,int& pErrorCode);
00680
00681
00706 vector < CComponent * > getComponents(int iCalendarID, int iStartDate,
00707 int iEndDate, int iLimit , int iOffset,int& pErrorCode);
00708
00709
00721 int updateTrash (int iCalendarID, string iComponentID, int iComponentType,
00722 time_t iDeletedTime, int& pErrorCode);
00723
00724
00734 vector < CEvent * > getAllAddedEvents(int iDate,int& pErrorCode);
00735
00745 vector < CTodo * > getAllAddedTodos(int iDate,int& pErrorCode);
00746
00756 vector < CJournal * > getAllAddedJournals(int iDate,int& pErrorCode);
00757
00768 vector < CComponent * >getAllAddItems(int iDate,int& pErrorCode);
00769
00780 vector < CEvent * > getAllModifiedEvents(int iDate,int& pErrorCode);
00781
00793 vector < CTodo * > getAllModifiedTodos(int iDate,int& pErrorCode);
00794
00805 vector < CJournal * > getAllModifiedJournals(int iDate,int& pErrorCode);
00806
00817 vector < CComponent * >getAllModifiedItems(int iDate,int& pErrorCode);
00818
00830 vector < string >getAllDeletedItems(int iDate,int iType,int& pErrorCode);
00831
00839 int exportCalendarEntries(string szFilename,int& pErrorCode);
00840
00850 bool setNextAlarm (string sComponentId,int iType,int& pErrorCode);
00851
00858 void setCalendarTune(string szCalendarTune);
00865 string getCalendarTune();
00866
00867
00877 bool addParameters(map< string, vector < CParameters* > > hashMap,string sId,ACTION iAction,int& pErrorCode);
00878
00889 bool addXProperties(vector < CProperties* > vXProp,string sId,ACTION iAction,int& pErrorCode);
00900 string getExternalToLocalId(string sId,bool fetchLocal, int & pErrorCode);
00901
00910 bool addMapTableInfo(string sLocalId,string sExternalId,int & pErrorCode);
00919 vector<string> getAllDeletedEvents (int iLastSyncDate,int& pErrorCode);
00928 vector<string> getAllDeletedJournals(int iLastSyncDate,int& pErrorCode);
00929
00938 vector<string> getAllDeletedTodos(int iLastSyncDate,int& pErrorCode);
00947 bool destroyExistingValidAlarms(int& pErrorCode );
00956 bool checkEntryExist(string szTable, string iId,int& pErrorCode);
00957
00965 CComponent* getEntry(string sCompId , int iType, int &pErrorCode);
00966
00975 vector <CEvent *> getDetailedBdayList(int &pErrorCode);
00976
00985 CEvent* getBirthDayEvent(string sCompId, int &pErrorCode);
00986
00994 void deleteComponents(vector<string> idList,int &ErrorCode);
01003 void modifyComponents(vector<CComponent*> &compList,int &ErrorCode);
01021 vector<string> addComponents(vector<CComponent*> &compList,vector <string> &duplicateIds,int &ErrorCode);
01028 vector <CEvent*> getEvents(int & pErrorCode);
01035 vector <CTodo*> getTodos(int & pErrorCode );
01042 vector <CJournal*> getJournals(int & pErrorCode );
01043
01047 string toString();
01048
01049
01050 private:
01051
01052
01053
01054 vector<CCache*> getDeletedCacheTableInfo(string sCompId,int& pErrorCode);
01055
01056 bool updateAttendeesForComponent(CComponentDetails *pCompDetails,
01057 int &pErrorCode);
01058 bool deleteAttendeesForComponent(CComponentDetails *pCompDetails,
01059 int &pErrorCode);
01060 bool updateOrganizerForComponent(CComponentDetails *pCompDetails,
01061 int &pErrorCode);
01062 bool deleteOrganizerForComponent(CComponentDetails *pCompDetails,
01063 int &pErrorCode);
01064 bool updateXPropertiesForComponent(CComponentDetails *pEntry,
01065 int &pErrorCode);
01066 bool deleteXPropertiesForComponent (CComponentDetails *pEntry,
01067 int &pErrorCode);
01068 bool updateParametersForComponent(CComponentDetails *pEntry,
01069 int &pErrorCode);
01070 bool deleteParametersForComponent (CComponentDetails *pEntry,
01071 int &pErrorCode);
01072
01073 bool deregisterAlarm (CComponentDetails *pCompDetails,
01074 int &pErrorCode);
01075
01082 bool checkFieldinTable(string szTable,string szField,string szValue);
01083
01094 vector <CComponent *> getRecursiveEventsInRange( int iStartDate,
01095 int iEndDate, vector < CComponent * >vListEntry,int& pErrorCode);
01096
01097
01108 vector < string > getChangeIds(int iComponentType, int iChangeType,
01109 int iDate,int& pErrorCode);
01110
01120 bool entrySetModifiedTime(CComponent * pEntry,int& pErrorCode);
01121
01122
01131 template < class comp > bool addCompDetails(sqlite3_stmt * pStmt, comp * cDet
01132 ,int& pErrorCode);
01133
01134
01142 bool addEventCompDetails(CEvent * pEvent,int& pErrorCode);
01143
01151 bool addTodoCompDetails(CTodo * ptrTodo,int& pErrorCode);
01152
01160 bool addJournalCompDetails(CJournal * ptrJournal,int& pErrorCode);
01161
01171 bool manageCookie(const ACTION iAction, CComponent * pcomp,int& pErrorCode);
01181 bool addAlarm(CAlarm * ptrAlarm, ACTION iAction, string sId,int& pErrorCode);
01182
01192 bool addRecurrence(CRecurrence * ptrRecur,
01193 string sId,int& pErrorCode);
01194 bool modifyRecurrence(CRecurrence * ptrRecur,
01195 string sId,int& pErrorCode);
01196
01197
01198
01199
01200
01201
01202
01203
01217 bool addAttendeeDetails(vector < CAttendee * >vAttendeeList, string sId,
01218 int iType,ACTION iAction,int& pErrorCode);
01219
01232 bool addOrganizer(COrganizer * ptrOrganizer, string sId,
01233 int iType,ACTION iAction,int& pErrorCode);
01234
01245 template < class ent > int addComponent(ent * pEvent, ACTION iAction,int& pErrorCode);
01246
01247
01248 string szName;
01250 CalendarColour iColor;
01252 bool fReadOnly;
01254 bool fIsVisible;
01256 int iCalId;
01258 CalendarType iCalType;
01260 string szCalendarTune;
01261
01262 string szCalendarVersion ;
01263
01264 SyncProfileType iProfileType ;
01265
01266 };
01267
01268 #endif