00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016 #ifndef __MULTI_CALENDAR_H__
00017 #define __MULTI_CALENDAR_H__
00018
00019
00020 extern "C" {
00021 #include <libical/ical.h>
00022 }
00023 #include <string>
00024 #include <vector>
00025 #include "CCalendar.h"
00026
00027 class CComponent;
00028 class CCalendarDB;
00029 class CBdayEvent;
00030 #ifndef _QRESULT__
00031 #define _QRESULT__
00032 typedef struct _QueryResult QueryResult;
00033
00034 struct _QueryResult {
00035 public:
00036 char **pResult;
00037 int iRow;
00038 int iColumn;
00039 };
00040 #endif
00041
00051 class CMulticalendar {
00052
00053 public:
00058 bool getRequiredDates(time_t iCurrTime, int iFutureDateNum,
00059 int iBackDateNum, int &iStartDate, int &iEndDate,
00060 vector<string> &vIdList,int &pErrorCode);
00065 int getDateRange(time_t currTime, int iNum, bool iOperation,
00066 string &szTemp, int &pErrorCode);
00067
00068
00069 vector<CComponent*> getEventInList(vector<string> listId ,
00070 vector<int> &vCalId,int & pErrorCode);
00071
00080 CCalendar* getSynchronizedCalendar();
00090 CCalendar* getDefaultCalendar();
00102 bool getICSFileInfo(string szFileName,unsigned int& iEventCount,
00103 unsigned int& iTodoCount,unsigned int& iJournalCount ,
00104 int& pErrorCode );
00105
00106
00107
00108 bool getICSFileInfoProgressive(string szFileName,
00109 unsigned int &iEventCount,
00110 unsigned int &iTodoCount,
00111 unsigned int &iJournalCount,
00112 int &pErrorCode, bool *bFileReadingOver,
00113 unsigned int iRequestLimit);
00117 void cancelImportIcsFileData();
00123 string getSynchronizedCalendarName();
00124
00132 string getCTCapXML();
00133
00134
00135
00139 bool importIcsFileDataProgressive(string szFileName, int iCalId,
00140 string & eventId,int &iDuplicateCountTask,
00141 int &iDuplicateCountEvent,int &iDuplicateCountJournal,
00142 int &pErrorCode, bool *bFileReadingOver,
00143 unsigned int iRequestLimit);
00156 bool importIcsFileData(string szFileName, int iCalId,
00157 string & eventId,int &iDuplicateCountTask,
00158 int &iDuplicateCountEvent,int &iDuplicateCountJournal,int &pErrorCode);
00163 int totalComponentsRead(string szLine, bool &bError,
00164 int &iEventBegin, int &iJournalBegin, int &iToDoBegin,
00165 unsigned int &iEventCount, unsigned int &iTodoCount,
00166 unsigned int &iJournalCount);
00177 int exportCalendarEntries(int iCalendarId,string szFileName,int& pErrorCode);
00178
00190 bool deleteEventBeyond(int iCalId, time_t iUtc,int& pErrorCode);
00191
00192
00204 bool deleteTodosBeyond(int iCalId, time_t iUtc,int& pErrorCode);
00205
00214 CCalendar *getCalendarByName(string szName,int& pErrorCode);
00215
00216
00229 bool deleteJournalsBeyond(int iCalId, time_t iUtc,int& pErrorCode);
00230
00242 bool enableAutomaticDeletion(int iDayBefore,int iMax,int& iLimit,int& pErrorCode);
00243
00244
00258 vector < time_t > getRecurrentTimes(string szRRule, icaltimetype iDtStart,
00259 time_t iViewEnd,icaltimezone *pTz,int& pErrorCode, int limit=-1);
00260
00273 bool checkRecurrentTimes(string szRRule, icaltimetype iDtStart,
00274 time_t iViewEnd,icaltimezone *pTz,int& pErrorCode);
00275
00292 vector < CComponent * >getComponents(int iCalId, int iType, int iStDate, int iEndDatei,int& pErrorCode);
00293
00294
00301 int getNoofCalendars();
00316 CCalendar* addCalendar(string szTitle, CalendarColour iColor, int iReadOnly,
00317 int iVisible,CalendarType iType,string szCalendarTune,
00318 string szCalendarVersion,int& pErrorCode);
00334 bool modifyCalendar(int iId ,string szTitle, CalendarColour iColor,
00335 int iReadOnly,int iVisible,CalendarType iType,string szCalendarTune,
00336 string szCalendarVersion,int& pErrorCode);
00337
00346 bool deleteCalendar(int iCalId,int& pErrorCode);
00347
00357 CCalendar *getCalendarById(int iCalId,int& pErrorCode);
00358
00370 vector < CComponent * > getComponentsAllCalendars( int iStDate, int iEndDate,
00371 int iLimit,int iOffset,vector<int > &vCalid , int& pErrorCode);
00383 vector < CComponent * > getAllEventsTodos(int iCalid, int iStDate,
00384 int iEndDate, int iLimit , int iOffset,int& pErrorCode);
00385
00395 bool deleteEventAndTodoBeyond(int iCalId, time_t iUtc,
00396 int iType,int &pErrorCode);
00408 bool addEvent(CEvent * pEvent, int iCalendarId,int& pErrorCode);
00409
00418 bool modifyEvent(CEvent * pEvent, int iCalendarId,int& pErrorCode);
00419
00428 bool deleteEvent(int iCalId, string sCompId,int& pErrorCode);
00429
00430
00441 bool addTodo(CTodo * pTodo, int iCalendarId,int& pErrorCode);
00442
00451 bool modifyTodo(CTodo * pTodo, int iCalendarId,int& pErrorCode);
00452
00461 bool deleteTodo(int iCalId, string sCompId,int& pErrorCode);
00462
00463
00472 bool addJournal(CJournal * pJournal, int iCalendarId,int& pErrorCode);
00473
00482 bool modifyJournal(CJournal * pJournal, int iCalendarId,int& pErrorCode);
00483
00492 bool deleteJournal(int iCalId, string sCompId,int& pErrorCode);
00493
00499 static CMulticalendar *MCInstance();
00500
00508 int getEventCount(int iCalId,int& pErrorCode);
00509
00517 int getTodoCount(int iCalId,int& pErrorCode);
00518
00526 int getNoteCount(int iCalId,int& pErrorCode);
00527
00537 vector < CCalendar * > getListCalFromMc();
00538
00546 void releaseListCalendars(vector<CCalendar*> Calendars);
00547
00556 bool modifyCalendar(CCalendar* pCal,int& pErrorCode);
00557
00567 int addCalendar(CCalendar* pCal,int& pErrorCode);
00576 int getNumOfUndoneTasks(int* iCalId,int& pErrorCode);
00583 int getNumOfAllDayEventsForToday(int& pErrorCode);
00593 vector <CComponent*> getTodaysAllDay(int &pErrorCode);
00594
00598 ~CMulticalendar();
00599
00609 bool addBirthDay(CBdayEvent * pBday,int& pErrorCode);
00610
00618 bool modifyBirthDay(CBdayEvent * pBday,int& pErrorCode);
00619
00627 bool deleteBirthDay(string szEUid,int& pErrorCode);
00628
00637 CCalendar *getCalendarByType(int iCalTypei,int& pErrorCode);
00638
00658 vector < CComponent * > getComponents(int iCalId, int iType, int iStDate,
00659 int iEndDate,int iLimit,int iOffset,int& pErrorCode);
00660
00661
00670 int setAutocommitOff ();
00671
00672
00681 bool commitAllChanges ();
00682
00690 bool rollbackAllChanges ();
00691
00705 bool setNextAlarm (int iCalendarId, string sComponentId,int iType,int& pErrorCode);
00706
00713 void setApplicationName (string ApplicationName);
00720 string getApplicationName ();
00727 bool checkCalendarNameExists(string szName);
00737 CComponent* getLatestComponent(int iType,time_t &startdate,int &ioffset,int& pErrorCode );
00744 string getDefaultCalendarName();
00756 CComponent* getPrevNextComponent(string szId , time_t iDateStart,
00757 bool isPrev,int& iCalid,time_t &instance_time,int& perrorcode);
00763 void MCdestroy();
00770 vector<CComponent*> popEventDetails (QueryResult* pQr);
00771
00777 int getCalendarIdForComponent(string iI,int &pErrorCode);
00778
00787 CCalendar* getBirthdayCalendar();
00794 bool deleteBirthdaysForCalendar(int iCalid,int & pErrorCode);
00802 int getBdayEventCount(int iCalId,int& pErrorCode);
00803
00808 static time_t getSystemTimeShift();
00813 static string getSystemTimeZone();
00821 void clearCalendar(int iCalId,int &pErrorCode );
00829 void clearCalendarContents(int iCalId,int &pErrorCode );
00834 icaltimezone* getSystemTimeZoneAsIcalTimeZone();
00837 void printCurrentTime();
00841
00851 vector <string> addComponents(vector<CComponent*> &compList,
00852 int iCalId,
00853 vector<string> & duplicateId,
00854 int &ErroCode);
00855
00864 void deleteComponents(vector<string> &idList,
00865 int iCalId,
00866 int &ErrorCode);
00867
00876 void modifyComponents(vector<CComponent*> &compList,
00877 int iCalId,
00878 int &ErrorCode);
00885 int getVisibleCalendarCount(int &pErrorCode);
00886
00887
00888
00889
00890 void findRecursiveImpendingEventId(time_t OriginalDateStart,
00891 time_t timebasedDateStart,
00892 bool isPrev,
00893 string &szEventId,
00894 time_t &instance_time,
00895 int &pErrorCode);
00896
00897 string getEventIdFromMap(map<time_t,string > &timeEventIdMap,
00898 time_t &timebasedDateStart,
00899 time_t &OriginalDateStart ,
00900 bool isPrev,
00901 time_t &instance_time);
00910 void enableDisableCalendarLogs(int value );
00911
00912 void deleteItemsByIdList(vector<string> &listId, int& pErrorCode);
00913
00918 bool moveFileFromSkel(string oldpath, string newpath);
00922 bool checkFileExists(string szPath);
00927 int getComponentCount(int &pErrorCode);
00932 CEvent *localBdayEventFromRemoteId(string szExId,int &pErrorCode);
00933
00944 bool getInstances(string sId, time_t timeFrom, time_t timeTo, vector <time_t> &result, time_t tzshift=0);
00945
00946
00956 int getInstanceNumber(string sId, time_t timeFrom, time_t timeTo, time_t tzshift=0);
00957
00964 bool dropInstances(string sId);
00965
00975 bool addInstance(string sId, time_t instTime, time_t duration, time_t tzshift=0);
00976
00986 bool addInstances(string sId, vector <time_t> instances, time_t duration, time_t tzshift=0);
00987
01006 vector <CComponent*> getComponentsWithLimitedData (
01007 int iStDate,int iEndDate,int iLimit,
01008 int iOffset, vector <int> &vCalid,int &pErrorCode);
01009 private:
01010
01011
01015 CMulticalendar();
01016
01017
01028 vector<string> giveRecursiveExpiredEvents(int iCalId,int iType,int iDayBefore,int iMax,int &iLimit,int &pErrorCode);
01041 time_t getInstanceBeyond(string szRRule, icaltimetype iDtStart, time_t iViewEnd, icaltimezone* pTz, int& pErrorCode);
01052 vector < string > giveExpiredEntries(int iCalId, int iType, int iConfiguredTime,int& pErrorCode);
01053
01063 int getCount(int iCalId, int iType,int& pErrorCode);
01064
01075 string generateRrule(int iRepeatType, time_t iUntil,int& pErrorCode);
01076
01077
01083 CMulticalendar(CMulticalendar & ref);
01084
01089 CMulticalendar & operator=(CMulticalendar & calendardb);
01090
01091
01092
01093 int iMaxId;
01094
01095
01096 string AppName;
01097 static CMulticalendar *pMc;
01098
01099
01100 int regenerateInstances();
01101
01102
01103 };
01104
01105 #endif