00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027 #ifndef _ALARMDAEMON_H
00028 #define _ALARMDAEMON_H
00029
00030 #include <ksimpleconfig.h>
00031
00032 #include <libkcal/calendarlocal.h>
00033
00034 #include "alarmdaemoniface.h"
00035 #include "clientinfo.h"
00036 #include "adcalendar.h"
00037 #include "adconfigdatarw.h"
00038
00039 class AlarmDaemon : public QObject, public ADConfigDataRW, virtual public AlarmDaemonIface
00040 {
00041 Q_OBJECT
00042 public:
00043 AlarmDaemon(QObject *parent = 0L, const char *name = 0L);
00044 virtual ~AlarmDaemon();
00045
00046 private slots:
00047 void checkAlarmsSlot();
00048 void checkIfSessionStarted();
00049
00050 void checkAlarms();
00051
00052 private:
00053
00054 void enableAutoStart(bool enable);
00055 void enableCal(const QString& urlString, bool enable)
00056 { enableCal_(expandURL(urlString), enable); }
00057 void reloadCal(const QCString& appname, const QString& urlString)
00058 { reloadCal_(appname, expandURL(urlString), false); }
00059 void reloadMsgCal(const QCString& appname, const QString& urlString)
00060 { reloadCal_(appname, expandURL(urlString), true); }
00061 void addCal(const QCString& appname, const QString& urlString)
00062 { addCal_(appname, expandURL(urlString), false); }
00063 void addMsgCal(const QCString& appname, const QString& urlString)
00064 { addCal_(appname, expandURL(urlString), true); }
00065 void removeCal(const QString& urlString)
00066 { removeCal_(expandURL(urlString)); }
00067 void resetMsgCal(const QCString& appname, const QString& urlString)
00068 { resetMsgCal_(appname, expandURL(urlString)); }
00069 void registerApp(const QCString& appName, const QString& appTitle,
00070 const QCString& dcopObject, int notificationType,
00071 bool displayCalendarName)
00072 { registerApp_(appName, appTitle, dcopObject, notificationType,
00073 displayCalendarName, false); }
00074 void reregisterApp(const QCString& appName, const QString& appTitle,
00075 const QCString& dcopObject, int notificationType,
00076 bool displayCalendarName)
00077 { registerApp_(appName, appTitle, dcopObject, notificationType,
00078 displayCalendarName, true); }
00079 void registerGui(const QCString& appName, const QCString& dcopObject);
00080 void readConfig();
00081 void quit();
00082 void forceAlarmCheck() { checkAlarms(); }
00083 void dumpDebug();
00084 QStringList dumpAlarms();
00085
00086 private:
00087
00088 struct GuiInfo
00089 {
00090 GuiInfo() { }
00091 explicit GuiInfo(const QCString &dcopObj) : dcopObject(dcopObj) { }
00092 QCString dcopObject;
00093 };
00094 typedef QMap<QCString, GuiInfo> GuiMap;
00095
00096 void registerApp_(const QCString& appName, const QString& appTitle,
00097 const QCString& dcopObject, int notificationType,
00098 bool displayCalendarName, bool reregister);
00099 void enableCal_(const QString& urlString, bool enable);
00100 void addCal_(const QCString& appname, const QString& urlString, bool msgCal);
00101 void reloadCal_(const QCString& appname, const QString& urlString, bool msgCal);
00102 void reloadCal_(ADCalendarBase*);
00103 void resetMsgCal_(const QCString& appname, const QString& urlString);
00104 void removeCal_(const QString& urlString);
00105 bool checkAlarms(ADCalendarBase*);
00106 void checkAlarms(const QCString& appName);
00107 void checkEventAlarms(const Event& event, QValueList<QDateTime>& alarmtimes);
00108 bool notifyEvent(ADCalendarBase*, const QString& eventID);
00109 void notifyGuiCalStatus(const ADCalendarBase*);
00110 void notifyGui(AlarmGuiChangeType, const QString& calendarURL = QString::null);
00111 void notifyGui(AlarmGuiChangeType, const QString& calendarURL, const QCString &appname);
00112
00113 const GuiInfo* getGuiInfo(const QCString &appName) const;
00114 void addConfigClient(KSimpleConfig&, const QCString& appName, const QString& key);
00115 void readCheckInterval();
00116 bool isSessionStarted();
00117 void setTimerStatus();
00118
00119 GuiMap mGuis;
00120 QTimer* mAlarmTimer;
00121 QTimer* mSessionStartTimer;
00122 QString mClientDataFile;
00123 int mCheckInterval;
00124 bool mEnabled;
00125 bool mAlarmTimerSyncing;
00126 bool mSessionStarted;
00127 };
00128
00129 #endif