00001
00016 #ifndef __CCALENDAR_H__
00017 #define __CCALENDAR_H__
00018
00019 #include <sqlite3.h>
00020
00021 #include "CEvent.h"
00022 #include "CTodo.h"
00023 #include "CJournal.h"
00024 #include "CBdayEvent.h"
00025 #include "CProperties.h"
00026 class CProperties;
00027 const int SEC_IN_DAY = 86400;
00028 const int ATTACHMENTS = 2;
00029 const int RECURSIVE = 4;
00030 const int ATTENDEES = 6;
00031 const int ORGANIZER = 8;
00032
00033 enum ACTION {
00034 E_ADD = 0,
00035 E_MODIFY,
00036 E_DELETE
00037 };
00038
00039 enum CalendarColour {
00040 COLOUR_RED = 0,
00041 COLOUR_GREEN,
00042 COLOUR_BLUE,
00043 COLOUR_WHITE,
00044 COLOUR_DARKRED,
00045 COLOUR_DARKBLUE,
00046 COLOUR_DARKGREEN,
00047 COLOUR_ORANGE,
00048 COLOUR_VIOLET,
00049 COLOUR_YELLOW
00050 };
00051
00052 enum SyncProfileType{
00053 SYNC_METHOD_NONE=0,
00054 SYNC_METHOD_TWOWAY ,
00055 SYNC_METHOD_SEND,
00056 SYNC_METHOD_RECEIVE,
00057 SYNC_METHOD_WEB
00058 };
00059
00060 typedef enum {
00061 LOCAL_CALENDAR = 0,
00062 BIRTHDAY_CALENDAR,
00063 SYNC_CALENDAR,
00064 DEFAULT_PRIVATE,
00065 DEFAULT_SYNC
00066 } CalendarType;
00067
00068
00076 string intToString(int i);
00077
00078
00087 class CCalendar {
00088
00089 public:
00090
00094 CCalendar(CCalendar & ref);
00095
00096
00100 const CCalendar & operator=(const CCalendar & right);
00101
00115 CCalendar(int iCalId, string szName, CalendarColour iColour, bool fIsReadOnly,
00116 bool fIsVisible, CalendarType iCalType ,string szCalendarTune);
00117
00131 CCalendar(string szName, CalendarColour iColour, bool fIsReadOnly,
00132 bool fIsVisible, CalendarType iCalType,string szCalendarTune,string szCalendarVersion);
00133
00144 vector < CComponent * > getAllEventsTodosForCalendar( int iStDate, int iEndDate,
00145 int iLimit , int iOffset,int& pErrorCode);
00146
00154 CCalendar();
00155
00169 bool setCalendarColor(CalendarColour iCalendarColor);
00170
00182 CalendarColour getCalendarColor();
00183
00191 bool setCalendarName(string szName);
00192
00199 string getCalendarName();
00200
00208 bool setCalendarId(int iId);
00209
00216 int getCalendarId();
00217
00218
00228 bool setCalendarType(CalendarType iCalType);
00235 void setProfileType(SyncProfileType iProfile);
00242 SyncProfileType getProfileType();
00243
00253 CalendarType getCalendarType();
00254
00261 bool setCalendarReadOnly(bool fIsReadOnly);
00262
00269 bool IsReadOnly();
00270
00277 bool setCalendarShown(bool fIsVisible);
00278
00285 bool IsShown();
00286
00295 bool modifyEvent(CEvent * pEvent,int &pErrorCode);
00296
00297
00306 bool modifyBirthDay(CBdayEvent *pBday,int& pErrorCode);
00307
00316 bool modifyJournal(CJournal * pJournal,int& pErrorCode);
00317
00326 bool modifyTodo(CTodo * pTodo,int& pErrorCode);
00327
00338 bool addEvent(CEvent * pEvent,int& pErrorCode);
00339
00340
00350 bool addBirthDay(CBdayEvent * pBday,int& pErrorCode);
00351
00362 bool addTodo(CTodo * ptrTodo,int& pErrorCode);
00363
00374 bool addJournal(CJournal * ptrJournal,int& pErrorCode);
00375
00385 bool deleteEvent(string sEventID,int& pErrorCode);
00386
00387
00395 bool deleteBirthDay(int iUid,int& pErrorCode);
00396
00406 bool deleteTodo(string sTodoID,int& pErrorCode);
00407
00416 bool deleteJournal(string sJournalID,int& pErrorCode);
00417
00425 void deleteComponent(string sId,int& pErrorCode);
00426
00435 vector < long > getCookie(string ietjId,int& pErrorCode);
00436
00443 string getCalendarVersion();
00444
00451 void setCalendarVersion(string szCalendarVersion);
00457 bool registerAlarmForVisibleCalendar( int& perrorCode);
00458
00467 ~CCalendar();
00477 vector<string> getIdList(int iCompType,int& pErrorCode);
00478
00490 CEvent *getEvent(string sComponentID,int& pErrorCode);
00491
00492
00504 CTodo *getTodo(string szComponentID,int& pErrorCode);
00505
00506
00518 CJournal *getJournal(string sComponentID,int& pErrorCode);
00528 bool checkDuplicateEntry(CComponent* pEntry,int iType , int& pErrorCode);
00529
00530
00539 vector < CEvent * >getDetailedEventList(int& pErrorCode);
00540
00541
00551 vector < CTodo * >getTodoListDetailed(int& pErrorCode);
00552
00553
00562 vector < CJournal * >getJournalListDetailed(int& pErrorCode);
00563
00564
00574 bool deleteBirthDay(string szUID,int& pErrorCode);
00575
00595 vector < CComponent * > getComponents(int iCalendarID,
00596 int iStartDate, int iEndDate,int& pErrorCode);
00597
00598
00623 vector < CComponent * > getComponents(int iCalendarID, int iStartDate,
00624 int iEndDate, int iLimit , int iOffset,int& pErrorCode);
00625
00626
00638 int updateTrash (int iCalendarID, string iComponentID, int iComponentType,
00639 time_t iDeletedTime, int& pErrorCode);
00640
00641
00651 vector < CEvent * > getAllAddedEvents(int iDate,int& pErrorCode);
00652
00662 vector < CTodo * > getAllAddedTodos(int iDate,int& pErrorCode);
00663
00673 vector < CJournal * > getAllAddedJournals(int iDate,int& pErrorCode);
00674
00685 vector < CComponent * >getAllAddItems(int iDate,int& pErrorCode);
00686
00697 vector < CEvent * > getAllModifiedEvents(int iDate,int& pErrorCode);
00698
00710 vector < CTodo * > getAllModifiedTodos(int iDate,int& pErrorCode);
00711
00722 vector < CJournal * > getAllModifiedJournals(int iDate,int& pErrorCode);
00723
00734 vector < CComponent * >getAllModifiedItems(int iDate,int& pErrorCode);
00735
00747 vector < string >getAllDeletedItems(int iDate,int iType,int& pErrorCode);
00748
00756 int exportCalendarEntries(string szFilename,int& pErrorCode);
00757
00766 bool setNextAlarm (string sComponentId,int& pErrorCode);
00767
00774 void setCalendarTune(string szCalendarTune);
00781 string getCalendarTune();
00782
00783
00793 bool addParameters(map< string, vector < CParameters* > > hashMap,string sId,ACTION iAction,int& pErrorCode);
00794
00805 bool addXProperties(vector < CProperties* > vXProp,string sId,ACTION iAction,int& pErrorCode);
00812 bool isComponentExists(string szUid);
00823 string getExternalToLocalId(string sId,bool fetchLocal, int & pErrorCode);
00824
00833 bool addMapTableInfo(string sLocalId,string sExternalId,int & pErrorCode);
00842 vector<string> getAllDeletedEvents (int iLastSyncDate,int& pErrorCode);
00851 vector<string> getAllDeletedJournals(int iLastSyncDate,int& pErrorCode);
00852
00861 vector<string> getAllDeletedTodos(int iLastSyncDate,int& pErrorCode);
00870 bool destroyExistingValidAlarms(int& pErrorCode );
00871
00872 private:
00881 bool addDataUtility(ACTION iOperation, string sId ,int& pErrorCode);
00888 bool checkFieldinTable(string szTable,string szField,string szValue);
00889
00900 vector <CComponent *> getRecursiveEventsInRange( int iStartDate,
00901 int iEndDate, vector < CComponent * >vListEntry,int& pErrorCode);
00902
00903
00914 vector < string > getChangeIds(int iComponentType, int iChangeType,
00915 int iDate,int& pErrorCode);
00916
00926 bool entrySetModifiedTime(CComponent * pEntry,int& pErrorCode);
00927
00936 bool checkEntryExist(string szTable, string iId,int& pErrorCode);
00937
00946 template < class comp > bool addCompDetails(sqlite3_stmt * pStmt, comp * cDet
00947 ,int& pErrorCode);
00948
00949
00957 bool addEventCompDetails(CEvent * pEvent,int& pErrorCode);
00958
00966 bool addTodoCompDetails(CTodo * ptrTodo,int& pErrorCode);
00967
00975 bool addJournalCompDetails(CJournal * ptrJournal,int& pErrorCode);
00976
00986 bool manageCookie(const ACTION iAction, CComponent * pcomp,int& pErrorCode);
00996 bool addAlarm(CAlarm * ptrAlarm, ACTION iAction, string sId,int& pErrorCode);
00997
01008 bool addRecurrence(CRecurrence * ptrRecur, ACTION iAction,
01009 string sId,int& pErrorCode);
01010
01024 bool addAttendeeDetails(vector < CAttendee * >vAttendeeList, string sId,
01025 int iType,ACTION iAction,int& pErrorCode);
01026
01039 bool addOrganizer(COrganizer * ptrOrganizer, string sId,
01040 int iType,ACTION iAction,int& pErrorCode);
01041
01052 template < class ent > int addComponent(ent * pEvent, ACTION iAction,int& pErrorCode);
01053
01054
01055 string szName;
01057 CalendarColour iColor;
01059 bool fReadOnly;
01061 bool fIsVisible;
01063 int iCalId;
01065 CalendarType iCalType;
01067 string szCalendarTune;
01068
01069 string szCalendarVersion ;
01070
01071 SyncProfileType iProfileType ;
01072
01073 };
01074
01075 #endif