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 __MULTI_CALENDAR_H__
00025 #define __MULTI_CALENDAR_H__
00026
00027
00028 extern "C" {
00029 #include <libical/ical.h>
00030 }
00031 #include <string>
00032 #include <vector>
00033 #include "CCalendar.h"
00034
00035 class CComponent;
00036 class CCalendarDB;
00037 class CBdayEvent;
00038 #ifndef _QRESULT__
00039 #define _QRESULT__
00040 typedef struct _QueryResult QueryResult;
00041
00042 struct _QueryResult {
00043 public:
00044 char **pResult;
00045 int iRow;
00046 int iColumn;
00047 };
00048 #endif
00049
00059 class CMulticalendar {
00060
00061 public:
00066 bool getRequiredDates(time_t iCurrTime, int iFutureDateNum,
00067 int iBackDateNum, int &iStartDate, int &iEndDate,
00068 vector<string> &vIdList,int &pErrorCode);
00073 int getDateRange(time_t currTime, int iNum, bool iOperation,
00074 string &szTemp, int &pErrorCode);
00075
00076
00077 vector<CComponent*> getEventInList(vector<string> listId ,
00078 vector<int> &vCalId,int & pErrorCode);
00079
00088 CCalendar* getSynchronizedCalendar();
00098 CCalendar* getDefaultCalendar();
00110 bool getICSFileInfo(string szFileName,unsigned int& iEventCount,
00111 unsigned int& iTodoCount,unsigned int& iJournalCount ,
00112 int& pErrorCode );
00113
00114
00115
00116 bool getICSFileInfoProgressive(string szFileName,
00117 unsigned int &iEventCount,
00118 unsigned int &iTodoCount,
00119 unsigned int &iJournalCount,
00120 int &pErrorCode, bool *bFileReadingOver,
00121 unsigned int iRequestLimit);
00125 void cancelImportIcsFileData();
00131 string getSynchronizedCalendarName();
00132
00140 string getCTCapXML();
00141
00142
00143
00147 bool importIcsFileDataProgressive(string szFileName, int iCalId,
00148 string & eventId,int &iDuplicateCountTask,
00149 int &iDuplicateCountEvent,int &iDuplicateCountJournal,
00150 int &pErrorCode, bool *bFileReadingOver,
00151 unsigned int iRequestLimit);
00164 bool importIcsFileData(string szFileName, int iCalId,
00165 string & eventId,int &iDuplicateCountTask,
00166 int &iDuplicateCountEvent,int &iDuplicateCountJournal,int &pErrorCode);
00171 int totalComponentsRead(string szLine, bool &bError,
00172 int &iEventBegin, int &iJournalBegin, int &iToDoBegin,
00173 unsigned int &iEventCount, unsigned int &iTodoCount,
00174 unsigned int &iJournalCount);
00185 int exportCalendarEntries(int iCalendarId,string szFileName,int& pErrorCode);
00186
00198 bool deleteEventBeyond(int iCalId, time_t iUtc,int& pErrorCode);
00199
00200
00212 bool deleteTodosBeyond(int iCalId, time_t iUtc,int& pErrorCode);
00213
00222 CCalendar *getCalendarByName(string szName,int& pErrorCode);
00223
00224
00237 bool deleteJournalsBeyond(int iCalId, time_t iUtc,int& pErrorCode);
00238
00250 bool enableAutomaticDeletion(int iDayBefore,int iMax,int& iLimit,int& pErrorCode);
00251
00266 vector < time_t > getRecurrentTimes(string szRRule, icaltimetype iDtStart,
00267 time_t iViewEnd,icaltimezone *pTz,int& pErrorCode, int limit=-1);
00268
00285 bool getRecurrentTimes(string szRRule,
00286 icaltimetype iDtStart,
00287 int iEventDuration,
00288 time_t iViewBegin,
00289 time_t iViewEnd,
00290 icaltimezone *pTz,
00291 vector <time_t> &outTimes,
00292 int& pErrorCode,
00293 int limit=-1);
00305 bool checkRecurrentTimes(string szRRule, icaltimetype iDtStart,
00306 time_t iViewEnd,icaltimezone *pTz,int& pErrorCode);
00307
00322 bool checkRecurrentTimes(string szRRule,
00323 icaltimetype iDtStart,
00324 int iEventDuration,
00325 time_t iViewBegin,
00326 time_t iViewEnd,
00327 icaltimezone *pTz,
00328 int& pErrorCode);
00329
00346 vector < CComponent * >getComponents(int iCalId, int iType, int iStDate, int iEndDatei,int& pErrorCode);
00347
00348
00355 int getNoofCalendars();
00370 CCalendar* addCalendar(string szTitle, CalendarColour iColor, int iReadOnly,
00371 int iVisible,CalendarType iType,string szCalendarTune,
00372 string szCalendarVersion,int& pErrorCode);
00388 bool modifyCalendar(int iId ,string szTitle, CalendarColour iColor,
00389 int iReadOnly,int iVisible,CalendarType iType,string szCalendarTune,
00390 string szCalendarVersion,int& pErrorCode);
00391
00400 bool deleteCalendar(int iCalId,int& pErrorCode);
00401
00411 CCalendar *getCalendarById(int iCalId,int& pErrorCode);
00412
00429 vector < CComponent * > getComponentsAllCalendars( int iStDate, int iEndDate,
00430 int iLimit,int iOffset,vector<int > &vCalid , int &pErrorCode,int iQueryType=0);
00442 vector < CComponent * > getAllEventsTodos(int iCalid, int iStDate,
00443 int iEndDate, int iLimit , int iOffset,int& pErrorCode);
00444
00454 bool deleteEventAndTodoBeyond(int iCalId, time_t iUtc,
00455 int iType,int &pErrorCode);
00467 bool addEvent(CEvent * pEvent, int iCalendarId,int& pErrorCode);
00468
00477 bool modifyEvent(CEvent * pEvent, int iCalendarId,int& pErrorCode);
00478
00487 bool deleteEvent(int iCalId, string sCompId,int& pErrorCode);
00488
00489
00500 bool addTodo(CTodo * pTodo, int iCalendarId,int& pErrorCode);
00501
00510 bool modifyTodo(CTodo * pTodo, int iCalendarId,int& pErrorCode);
00511
00520 bool deleteTodo(int iCalId, string sCompId,int& pErrorCode);
00521
00522
00531 bool addJournal(CJournal * pJournal, int iCalendarId,int& pErrorCode);
00532
00541 bool modifyJournal(CJournal * pJournal, int iCalendarId,int& pErrorCode);
00542
00551 bool deleteJournal(int iCalId, string sCompId,int& pErrorCode);
00552
00558 static CMulticalendar *MCInstance();
00559
00567 int getEventCount(int iCalId,int& pErrorCode);
00568
00576 int getTodoCount(int iCalId,int& pErrorCode);
00577
00585 int getNoteCount(int iCalId,int& pErrorCode);
00586
00596 vector < CCalendar * > getListCalFromMc();
00597
00605 void releaseListCalendars(vector<CCalendar*> Calendars);
00606
00615 bool modifyCalendar(CCalendar* pCal,int& pErrorCode);
00616
00626 int addCalendar(CCalendar* pCal,int& pErrorCode);
00635 int getNumOfUndoneTasks(int* iCalId,int& pErrorCode);
00642 int getNumOfAllDayEventsForToday(int& pErrorCode);
00652 vector <CComponent*> getTodaysAllDay(int &pErrorCode);
00653
00657 ~CMulticalendar();
00658
00668 bool addBirthDay(CBdayEvent * pBday,int& pErrorCode);
00669
00677 bool addBirthdays(vector<CBdayEvent*>& pBdays, int &pErrorCode);
00678
00686 bool modifyBirthDay(CBdayEvent * pBday,int& pErrorCode);
00687
00695 bool deleteBirthDay(string szEUid,int& pErrorCode);
00696
00704 bool deleteBirthdays(vector<string> &szEUidList,int& pErrorCode);
00705
00714 CCalendar *getCalendarByType(int iCalTypei,int& pErrorCode);
00715
00735 vector < CComponent * > getComponents(int iCalId, int iType, int iStDate,
00736 int iEndDate,int iLimit,int iOffset,int& pErrorCode);
00737
00738
00747 int setAutocommitOff ();
00748
00749
00758 bool commitAllChanges ();
00759
00767 bool rollbackAllChanges ();
00768
00782 bool setNextAlarm (int iCalendarId, string sComponentId,int iType,int& pErrorCode);
00783
00790 void setApplicationName (string ApplicationName);
00797 string getApplicationName ();
00804 bool checkCalendarNameExists(string szName);
00814 CComponent* getLatestComponent(int iType,time_t &startdate,int &ioffset,int& pErrorCode );
00821 string getDefaultCalendarName();
00833 CComponent* getPrevNextComponent(string szId , time_t iDateStart,
00834 bool isPrev,int& iCalid,time_t &instance_time,int& perrorcode);
00840 void MCdestroy();
00847 vector<CComponent*> popEventDetails (QueryResult* pQr);
00848
00854 int getCalendarIdForComponent(string iI,int &pErrorCode);
00855
00864 CCalendar* getBirthdayCalendar();
00871 bool deleteBirthdaysForCalendar(int iCalid,int & pErrorCode);
00879 int getBdayEventCount(int iCalId,int& pErrorCode);
00880
00885 static time_t getSystemTimeShift();
00890 static string getSystemTimeZone();
00898 void clearCalendar(int iCalId,int &pErrorCode );
00907 void clearCalendarContents(int iCalId,int &pErrorCode );
00912 icaltimezone* getSystemTimeZoneAsIcalTimeZone();
00915 void printCurrentTime();
00919
00929 vector <string> addComponents(vector<CComponent*> &compList,
00930 int iCalId,
00931 vector<string> & duplicateId,
00932 int &ErroCode);
00933
00942 void deleteComponents(vector<string> &idList,
00943 int iCalId,
00944 int &ErrorCode);
00945
00954 void modifyComponents(vector<CComponent*> &compList,
00955 int iCalId,
00956 int &ErrorCode);
00963 int getVisibleCalendarCount(int &pErrorCode);
00964
00965
00966
00967
00968 void findRecursiveImpendingEventId(time_t OriginalDateStart,
00969 time_t timebasedDateStart,
00970 bool isPrev,
00971 string &szEventId,
00972 time_t &instance_time,
00973 int &pErrorCode);
00974
00975 string getEventIdFromMap(map<time_t,string > &timeEventIdMap,
00976 time_t &timebasedDateStart,
00977 time_t &OriginalDateStart ,
00978 bool isPrev,
00979 time_t &instance_time);
00988 void enableDisableCalendarLogs(int value );
00989
00990 void deleteItemsByIdList(vector<string> &listId, int& pErrorCode);
00991
00996 bool moveFileFromSkel(string oldpath, string newpath);
01000 static bool checkFileExists(string szPath);
01005 int getComponentCount(int &pErrorCode);
01010 CEvent *localBdayEventFromRemoteId(string szExId,int &pErrorCode);
01011
01022 bool getInstances(string sId, time_t timeFrom, time_t timeTo, vector <time_t> &result, time_t tzshift=0);
01023
01024
01034 int getInstanceNumber(string sId, time_t timeFrom, time_t timeTo, time_t tzshift=0);
01035
01042 bool dropInstances(string sId);
01043
01053 bool addInstance(string sId, time_t instTime, time_t duration, time_t tzshift=0);
01054
01064 bool addInstances(string sId, vector <time_t> instances, time_t duration, time_t tzshift=0);
01065
01084 vector <CComponent*> getComponentsWithLimitedData (
01085 int iStDate,int iEndDate,int iLimit,
01086 int iOffset, vector <int> &vCalid,int &pErrorCode);
01090 bool checkExistenceOfFutureRepeatingEvent(time_t OriginalDateStart,
01091 string sId,
01092 int& pErrorCode);
01093
01124 bool checkForNextPrev(time_t instanceTime,string Id ,bool isPrev, int &pErrorCode);
01125
01126
01133 CalendarColour getUnusedCalendarColor(void);
01134
01138 static void reloadSystemTimezone();
01139
01143 void getImpendingAlarm (string szRrule,time_t & triggerTime,
01144 time_t dateStart, int alarmFlag, icaltimezone* pTz);
01145
01146
01147 private:
01148
01149
01153 CMulticalendar();
01154
01155
01166 vector<string> giveRecursiveExpiredEvents(int iCalId,int iType,int iDayBefore,int iMax,int &iLimit,int &pErrorCode);
01179 time_t getInstanceBeyond(string szRRule, icaltimetype iDtStart, time_t iViewEnd, icaltimezone* pTz, int& pErrorCode);
01190 vector < string > giveExpiredEntries(int iCalId, int iType, int iConfiguredTime,int& pErrorCode);
01191
01201 int getCount(int iCalId, int iType,int& pErrorCode);
01202
01213 string generateRrule(int iRepeatType, time_t iUntil,int& pErrorCode);
01214
01215
01221 CMulticalendar(CMulticalendar & ref);
01222
01227 CMulticalendar & operator=(CMulticalendar & calendardb);
01228
01238 void setCalendarName(CCalendar* pCalendar, string szCalendarName) const;
01239
01240
01241
01242 int iMaxId;
01243
01244
01245 string AppName;
01246 static CMulticalendar *pMc;
01247 static std::string szSystemTimezone;
01248
01249
01250 int regenerateInstances();
01251
01259 int deleteNonRecurrentComponents(int iDayBefore, int iMax, int &pErrorCode);
01260
01261
01268 bool deleteAllComponents(int iCalId, int &pErrorCode);
01269 };
01270
01271 #endif