00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024 #ifndef __CCALENDAR_H__
00025 #define __CCALENDAR_H__
00026 #include <map>
00027 #include <sqlite3.h>
00028 #include <string>
00029 #include <vector>
00030 using namespace std;
00031 using std::vector;
00032 using std::string;
00033
00034
00035 class CEvent;
00036 class CTodo;
00037 class CJournal;
00038 class CBdayEvent;
00039 class CProperties;
00040 class CCache;
00041 class CProperties;
00042 class CComponentDetails;
00043 class CRecurrence;
00044 class CAlarm;
00045 class CComponent;
00046 class CParameters;
00047 class CAttendee;
00048 class COrganizer;
00049 class CBdayEvent;
00050
00051
00052 const int SEC_IN_DAY = 86400;
00053 const int ATTACHMENTS = 2;
00054 const int RECURSIVE = 4;
00055 const int ATTENDEES = 6;
00056 const int ORGANIZER = 8;
00057
00058 enum ACTION {
00059 E_ADD = 0,
00060 E_MODIFY,
00061 E_DELETE
00062 };
00063
00064 enum CalendarColour {
00065 COLOUR_DARKBLUE = 0,
00066 COLOUR_DARKGREEN,
00067 COLOUR_DARKRED,
00068 COLOUR_ORANGE,
00069 COLOUR_VIOLET,
00070 COLOUR_YELLOW,
00071 COLOUR_WHITE,
00072 COLOUR_BLUE,
00073 COLOUR_RED,
00074 COLOUR_GREEN,
00075
00076 COLOUR_NEXT_FREE
00077 };
00078
00079 enum SyncProfileType{
00080 SYNC_METHOD_NONE=0,
00081 SYNC_METHOD_TWOWAY ,
00082 SYNC_METHOD_SEND,
00083 SYNC_METHOD_RECEIVE,
00084 SYNC_METHOD_WEB
00085 };
00086
00087 typedef enum {
00088 LOCAL_CALENDAR = 0,
00089 BIRTHDAY_CALENDAR,
00090 SYNC_CALENDAR,
00091 DEFAULT_PRIVATE,
00092 DEFAULT_SYNC
00093 } CalendarType;
00094
00095
00103 string intToString(int i);
00104
00105
00114 class CCalendar {
00115
00116 public:
00117
00118
00119
00120
00121 string getCacheEntry(time_t startDate, int &pErrorCode);
00122
00126 bool addCacheEntry(string sId, time_t startDate, int &pErrorCode);
00127
00128
00132 bool deleteCacheEntry(time_t startDate, int &pErrorCode);
00133
00137 int getCacheTableCount(time_t inputDate, int &pErrorCode);
00145 bool addCacheEntries(CComponent* pEntry, int &pErrorCode);
00146
00147
00148
00149
00150
00151 bool updateCacheEntry(string szId, time_t startDate, int &pErrorCode);
00152
00153
00154
00155
00156 bool appendToIds(string Id, string& szIds);
00157
00161 string removeFromIds(string Id, string szIdStrings);
00162
00167 bool deleteCacheEntries(string szId, int eEntry, int &pErrorCode);
00168
00172 bool modifyCacheEntry(CComponent* oldEntry, int &pErrorCode);
00176 void checkIfMultiDayEvent(CComponent* pEntry, vector <time_t> &vStartdates);
00177
00181 CCalendar(CCalendar & ref);
00182
00183
00187 const CCalendar & operator=(const CCalendar & right);
00188
00202 CCalendar(int iCalId, string szName, CalendarColour iColour, bool fIsReadOnly,
00203 bool fIsVisible, CalendarType iCalType ,string szCalendarTune);
00204
00218 CCalendar(string szName, CalendarColour iColour, bool fIsReadOnly,
00219 bool fIsVisible, CalendarType iCalType,string szCalendarTune,string szCalendarVersion);
00220
00231 vector < CComponent * > getAllEventsTodos( int iStDate, int iEndDate,
00232 int iLimit , int& iOffset,int& pErrorCode);
00233
00241 CCalendar();
00242
00256 bool setCalendarColor(CalendarColour iCalendarColor);
00257
00269 CalendarColour getCalendarColor();
00270
00278 bool setCalendarName(string szName);
00279
00286 string getCalendarName();
00287
00295 bool setCalendarId(int iId);
00296
00303 int getCalendarId();
00304
00305
00315 bool setCalendarType(CalendarType iCalType);
00322 void setProfileType(SyncProfileType iProfile);
00329 SyncProfileType getProfileType();
00330
00340 CalendarType getCalendarType();
00341
00348 bool setCalendarReadOnly(bool fIsReadOnly);
00349
00356 bool IsReadOnly();
00357
00364 bool setCalendarShown(bool fIsVisible);
00365
00372 bool IsShown();
00373
00384 bool modifyEvent(CEvent * pEvent,int &pErrorCode);
00385
00386
00395 bool modifyBirthDay(CBdayEvent *pBday,int& pErrorCode);
00396
00407 bool modifyJournal(CJournal * pJournal,int& pErrorCode);
00408
00419 bool modifyTodo(CTodo * pTodo,int& pErrorCode);
00420
00431 bool addEvent(CEvent * pEvent,int& pErrorCode);
00432
00433
00443 bool addBirthDay(CBdayEvent * pBday,int& pErrorCode);
00444
00455 bool addTodo(CTodo * ptrTodo,int& pErrorCode);
00456
00467 bool addJournal(CJournal * ptrJournal,int& pErrorCode);
00468
00478 bool deleteEvent(string sEventID,int& pErrorCode);
00479
00480
00488 bool deleteBirthDay(int iUid,int& pErrorCode);
00489
00499 bool deleteTodo(string sTodoID,int& pErrorCode);
00500
00509 bool deleteJournal(string sJournalID,int& pErrorCode);
00510
00518 void deleteComponent(string sId,int& pErrorCode);
00519
00528 vector < long > getCookie(string ietjId,int& pErrorCode);
00529
00536 string getCalendarVersion();
00537
00544 void setCalendarVersion(string szCalendarVersion);
00550 bool registerAlarmForVisibleCalendar( int& perrorCode);
00551
00560 ~CCalendar();
00570 vector<string> getIdList(int iCompType,int& pErrorCode);
00571
00583 CEvent *getEvent(string sComponentID,int& pErrorCode);
00584
00585
00597 CTodo *getTodo(string szComponentID,int& pErrorCode);
00598
00599
00611 CJournal *getJournal(string sComponentID,int& pErrorCode);
00621 bool checkDuplicateEntry(CComponent* pEntry,int iType , int& pErrorCode);
00622
00623
00632 vector < CEvent * >getDetailedEventList(int& pErrorCode);
00633
00634
00644 vector < CTodo * >getTodoListDetailed(int& pErrorCode);
00645
00646
00655 vector < CJournal * >getJournalListDetailed(int& pErrorCode);
00656
00657
00667 bool deleteBirthDay(string szUID,int& pErrorCode);
00668
00688 vector < CComponent * > getComponents(int iCalendarID,
00689 int iStartDate, int iEndDate,int& pErrorCode);
00690
00691
00716 vector < CComponent * > getComponents(int iCalendarID, int iStartDate,
00717 int iEndDate, int iLimit , int iOffset,int& pErrorCode);
00718
00719
00731 int updateTrash (int iCalendarID, string iComponentID, int iComponentType,
00732 time_t iDeletedTime, int& pErrorCode);
00733
00734
00744 vector < CEvent * > getAllAddedEvents(int iDate,int& pErrorCode);
00745
00755 vector < CTodo * > getAllAddedTodos(int iDate,int& pErrorCode);
00756
00766 vector < CJournal * > getAllAddedJournals(int iDate,int& pErrorCode);
00767
00778 vector < CComponent * >getAllAddItems(int iDate,int& pErrorCode);
00779
00790 vector < CEvent * > getAllModifiedEvents(int iDate,int& pErrorCode);
00791
00803 vector < CTodo * > getAllModifiedTodos(int iDate,int& pErrorCode);
00804
00815 vector < CJournal * > getAllModifiedJournals(int iDate,int& pErrorCode);
00816
00827 vector < CComponent * >getAllModifiedItems(int iDate,int& pErrorCode);
00828
00840 vector < string >getAllDeletedItems(int iDate,int iType,int& pErrorCode);
00841
00849 int exportCalendarEntries(string szFilename,int& pErrorCode);
00850
00860 bool setNextAlarm (string sComponentId,int iType,int& pErrorCode);
00861
00868 void setCalendarTune(string szCalendarTune);
00875 string getCalendarTune();
00876
00877
00888 bool addParameters(map< string, vector < CParameters* > > hashMap,string sId,ACTION iAction,int& pErrorCode,bool clearHashMap = true);
00889
00900 bool addXProperties(vector < CProperties* > vXProp,string sId,ACTION iAction,int& pErrorCode);
00911 string getExternalToLocalId(string sId,bool fetchLocal, int & pErrorCode);
00912
00921 bool addMapTableInfo(string sLocalId,string sExternalId,int & pErrorCode);
00930 vector<string> getAllDeletedEvents (int iLastSyncDate,int& pErrorCode);
00939 vector<string> getAllDeletedJournals(int iLastSyncDate,int& pErrorCode);
00940
00949 vector<string> getAllDeletedTodos(int iLastSyncDate,int& pErrorCode);
00958 bool destroyExistingValidAlarms(int& pErrorCode );
00967 bool checkEntryExist(string szTable, string iId,int& pErrorCode);
00968
00976 CComponent* getEntry(string sCompId , int iType, int &pErrorCode);
00977
00986 vector <CEvent *> getDetailedBdayList(int &pErrorCode);
00987
00996 CEvent* getBirthDayEvent(string sCompId, int &pErrorCode);
00997
01005 void deleteComponents(vector<string> idList,int &ErrorCode);
01014 void modifyComponents(vector<CComponent*> &compList,int &ErrorCode);
01032 vector<string> addComponents(vector<CComponent*> &compList,vector <string> &duplicateIds,int &ErrorCode);
01039 vector <CEvent*> getEvents(int & pErrorCode);
01046 vector <CTodo*> getTodos(int & pErrorCode );
01053 vector <CJournal*> getJournals(int & pErrorCode );
01054
01058 string toString();
01059
01060
01061 private:
01062
01063
01064
01065 vector<CCache*> getDeletedCacheTableInfo(string sCompId,int& pErrorCode);
01066
01067 bool updateAttendeesForComponent(CComponentDetails *pCompDetails,
01068 int &pErrorCode);
01069 bool deleteAttendeesForComponent(CComponentDetails *pCompDetails,
01070 int &pErrorCode);
01071 bool updateOrganizerForComponent(CComponentDetails *pCompDetails,
01072 int &pErrorCode);
01073 bool deleteOrganizerForComponent(CComponentDetails *pCompDetails,
01074 int &pErrorCode);
01075 bool updateXPropertiesForComponent(CComponentDetails *pEntry,
01076 int &pErrorCode);
01077 bool deleteXPropertiesForComponent (CComponentDetails *pEntry,
01078 int &pErrorCode);
01079 bool updateParametersForComponent(CComponentDetails *pEntry,
01080 int &pErrorCode);
01081 bool deleteParametersForComponent (CComponentDetails *pEntry,
01082 int &pErrorCode);
01083
01084 bool deregisterAlarm (CComponentDetails *pCompDetails,
01085 int &pErrorCode);
01086
01093 bool checkFieldinTable(string szTable,string szField,string szValue);
01094
01105 vector <CComponent *> getRecursiveEventsInRange( int iStartDate,
01106 int iEndDate, vector < CComponent * >vListEntry,int& pErrorCode);
01107
01108
01119 vector < string > getChangeIds(int iComponentType, int iChangeType,
01120 int iDate,int& pErrorCode);
01121
01131 bool entrySetModifiedTime(CComponent * pEntry,int& pErrorCode);
01132
01133
01142 template < class comp > bool addCompDetails(sqlite3_stmt * pStmt, comp * cDet
01143 ,int& pErrorCode);
01144
01145
01153 bool addEventCompDetails(CEvent * pEvent,int& pErrorCode);
01154
01162 bool addTodoCompDetails(CTodo * ptrTodo,int& pErrorCode);
01163
01171 bool addJournalCompDetails(CJournal * ptrJournal,int& pErrorCode);
01172
01182 bool manageCookie(const ACTION iAction, CComponent * pcomp,int& pErrorCode);
01192 bool addAlarm(CAlarm * ptrAlarm, ACTION iAction, string sId,int& pErrorCode);
01193
01203 bool addRecurrence(CRecurrence * ptrRecur,
01204 string sId,int& pErrorCode);
01205 bool modifyRecurrence(CRecurrence * ptrRecur,
01206 string sId,int& pErrorCode);
01207
01208
01209
01210
01211
01212
01213
01214
01228 bool addAttendeeDetails(vector < CAttendee * >vAttendeeList, string sId,
01229 int iType,ACTION iAction,int& pErrorCode);
01230
01243 bool addOrganizer(COrganizer * ptrOrganizer, string sId,
01244 int iType,ACTION iAction,int& pErrorCode);
01245
01256 template < class ent > int addComponent(ent * pEvent, ACTION iAction,int& pErrorCode);
01257
01258
01259 string szName;
01261 CalendarColour iColor;
01263 bool fReadOnly;
01265 bool fIsVisible;
01267 int iCalId;
01269 CalendarType iCalType;
01271 string szCalendarTune;
01272
01273 string szCalendarVersion ;
01274
01275 SyncProfileType iProfileType ;
01276
01277 };
01278
01279 #endif