00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021 #ifndef ALARMCALENDAR_H
00022 #define ALARMCALENDAR_H
00023
00024 #include <tqobject.h>
00025 #include <kurl.h>
00026 #include <libkcal/calendarlocal.h>
00027 #include "alarmevent.h"
00028
00029 class TDEConfig;
00030
00031
00036 class AlarmCalendar : public TQObject
00037 {
00038 Q_OBJECT
00039
00040 public:
00041 virtual ~AlarmCalendar();
00042 bool valid() const { return mUrl.isValid(); }
00043 KAEvent::Status type() const { return mType; }
00044 bool open();
00045 int load();
00046 bool reload();
00047 bool save();
00048 void close();
00049 void startUpdate();
00050 bool endUpdate();
00051 KCal::Event* event(const TQString& uniqueID);
00052 KCal::Event::List events();
00053 KCal::Event::List eventsWithAlarms(const TQDateTime& from, const TQDateTime& to);
00054 KCal::Event* addEvent(KAEvent&, bool useEventID = false);
00055 void updateEvent(const KAEvent&);
00056 bool deleteEvent(const TQString& eventID, bool save = false);
00057 void emitEmptyStatus();
00058 void purgeAll() { purge(0); }
00059 void setPurgeDays(int days);
00060 void purgeIfQueued();
00061 bool isOpen() const { return mOpen; }
00062 TQString path() const { return mUrl.prettyURL(); }
00063 TQString urlString() const { return mUrl.url(); }
00064
00065 static TQString icalProductId();
00066 static bool initialiseCalendars();
00067 static void terminateCalendars();
00068 static AlarmCalendar* activeCalendar() { return mCalendars[ACTIVE]; }
00069 static AlarmCalendar* expiredCalendar() { return mCalendars[EXPIRED]; }
00070 static AlarmCalendar* displayCalendar() { return mCalendars[DISPLAY]; }
00071 static AlarmCalendar* templateCalendar() { return mCalendars[TEMPLATE]; }
00072 static AlarmCalendar* activeCalendarOpen() { return calendarOpen(ACTIVE); }
00073 static AlarmCalendar* expiredCalendarOpen() { return calendarOpen(EXPIRED); }
00074 static AlarmCalendar* displayCalendarOpen() { return calendarOpen(DISPLAY); }
00075 static AlarmCalendar* templateCalendarOpen() { return calendarOpen(TEMPLATE); }
00076 static bool importAlarms(TQWidget*);
00077 static const KCal::Event* getEvent(const TQString& uniqueID);
00078
00079 enum CalID { ACTIVE, EXPIRED, DISPLAY, TEMPLATE, NCALS };
00080
00081 signals:
00082 void calendarSaved(AlarmCalendar*);
00083 void purged();
00084 void emptyStatus(bool empty);
00085
00086 private slots:
00087 void slotPurge();
00088
00089 private:
00090 AlarmCalendar(const TQString& file, CalID, const TQString& icalFile = TQString(),
00091 const TQString& configKey = TQString());
00092 bool create();
00093 bool saveCal(const TQString& newFile = TQString());
00094 void purge(int daysToKeep);
00095 void startPurgeTimer();
00096 static AlarmCalendar* createCalendar(CalID, TDEConfig*, TQString& writePath, const TQString& configKey = TQString());
00097 static AlarmCalendar* calendarOpen(CalID);
00098
00099 static AlarmCalendar* mCalendars[NCALS];
00100
00101 KCal::CalendarLocal* mCalendar;
00102 KURL mUrl;
00103 KURL mICalUrl;
00104 TQString mLocalFile;
00105 TQString mConfigKey;
00106 KAEvent::Status mType;
00107 int mPurgeDays;
00108 bool mOpen;
00109 int mPurgeDaysQueued;
00110 int mUpdateCount;
00111 bool mUpdateSave;
00112 bool mVCal;
00113 };
00114
00115 #endif // ALARMCALENDAR_H