00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021 #ifndef KALARMEVENT_H
00022 #define KALARMEVENT_H
00023
00026 #include <qcolor.h>
00027 #include <qfont.h>
00028
00029 #include <libkcal/person.h>
00030 #include <libkcal/event.h>
00031 namespace KCal {
00032 class Calendar;
00033 class Recurrence;
00034 }
00035
00036 #include "datetime.h"
00037 #include "karecurrence.h"
00038
00039 class AlarmCalendar;
00040 class KARecurrence;
00041 struct AlarmData;
00042
00043
00044 typedef KCal::Person EmailAddress;
00045 class EmailAddressList : public QValueList<KCal::Person>
00046 {
00047 public:
00048 EmailAddressList() : QValueList<KCal::Person>() { }
00049 EmailAddressList(const QValueList<KCal::Person>& list) { operator=(list); }
00050 EmailAddressList& operator=(const QValueList<KCal::Person>&);
00051 QString join(const QString& separator) const;
00052 };
00053
00054
00055
00056 class KAAlarmEventBase
00057 {
00058 public:
00059 ~KAAlarmEventBase() { }
00060 const QString& cleanText() const { return mText; }
00061 QString message() const { return (mActionType == T_MESSAGE || mActionType == T_EMAIL) ? mText : QString::null; }
00062 QString fileName() const { return (mActionType == T_FILE) ? mText : QString::null; }
00063 QString command() const { return (mActionType == T_COMMAND) ? mText : QString::null; }
00064 QString emailFromKMail() const { return mEmailFromKMail; }
00065 const EmailAddressList& emailAddresses() const { return mEmailAddresses; }
00066 QString emailAddresses(const QString& sep) const { return mEmailAddresses.join(sep); }
00067 const QString& emailSubject() const { return mEmailSubject; }
00068 const QStringList& emailAttachments() const { return mEmailAttachments; }
00069 QString emailAttachments(const QString& sep) const { return mEmailAttachments.join(sep); }
00070 bool emailBcc() const { return mEmailBcc; }
00071 const QColor& bgColour() const { return mBgColour; }
00072 const QColor& fgColour() const { return mFgColour; }
00073 bool defaultFont() const { return mDefaultFont; }
00074 const QFont& font() const;
00075 int lateCancel() const { return mLateCancel; }
00076 bool autoClose() const { return mAutoClose; }
00077 bool commandScript() const { return mCommandScript; }
00078 bool confirmAck() const { return mConfirmAck; }
00079 bool repeatAtLogin() const { return mRepeatAtLogin; }
00080 int repeatCount() const { return mRepeatCount; }
00081 int repeatInterval() const { return mRepeatInterval; }
00082 bool displaying() const { return mDisplaying; }
00083 bool beep() const { return mBeep; }
00084 bool speak() const { return (mActionType == T_MESSAGE) && mSpeak; }
00085 int flags() const;
00086 #ifdef NDEBUG
00087 void dumpDebug() const { }
00088 #else
00089 void dumpDebug() const;
00090 #endif
00091
00092 protected:
00093 enum Type { T_MESSAGE, T_FILE, T_COMMAND, T_AUDIO, T_EMAIL };
00094
00095 KAAlarmEventBase() : mLateCancel(0), mAutoClose(false), mBeep(false), mRepeatAtLogin(false),
00096 mDisplaying(false), mEmailBcc(false), mConfirmAck(false) { }
00097 KAAlarmEventBase(const KAAlarmEventBase& rhs) { copy(rhs); }
00098 KAAlarmEventBase& operator=(const KAAlarmEventBase& rhs) { copy(rhs); return *this; }
00099 void copy(const KAAlarmEventBase&);
00100 void set(int flags);
00101
00102 QString mEventID;
00103 QString mText;
00104 DateTime mNextMainDateTime;
00105 QColor mBgColour;
00106 QColor mFgColour;
00107 QFont mFont;
00108 QString mEmailFromKMail;
00109 EmailAddressList mEmailAddresses;
00110 QString mEmailSubject;
00111 QStringList mEmailAttachments;
00112 float mSoundVolume;
00113 float mFadeVolume;
00114 int mFadeSeconds;
00115 Type mActionType;
00116 int mRepeatCount;
00117 int mRepeatInterval;
00118 int mLateCancel;
00119 bool mAutoClose;
00120 bool mCommandScript;
00121 bool mBeep;
00122 bool mSpeak;
00123 bool mRepeatSound;
00124 bool mRepeatAtLogin;
00125 bool mDisplaying;
00126 bool mEmailBcc;
00127 bool mConfirmAck;
00128 bool mDefaultFont;
00129
00130 friend class AlarmData;
00131 };
00132
00133
00134
00135
00136 class KAAlarm : public KAAlarmEventBase
00137 {
00138 public:
00139
00140 enum Action
00141 {
00142 MESSAGE = T_MESSAGE,
00143 FILE = T_FILE,
00144 COMMAND = T_COMMAND,
00145 EMAIL = T_EMAIL,
00146 AUDIO = T_AUDIO
00147 };
00148
00149
00150
00151 enum Type
00152 {
00153 INVALID_ALARM = 0,
00154 MAIN_ALARM = 1,
00155
00156 REMINDER_ALARM = 0x02,
00157 DEFERRED_ALARM = 0x04,
00158 DEFERRED_REMINDER_ALARM = REMINDER_ALARM | DEFERRED_ALARM,
00159
00160
00161 AT_LOGIN_ALARM = 0x10,
00162 DISPLAYING_ALARM = 0x20,
00163
00164 AUDIO_ALARM = 0x30,
00165 PRE_ACTION_ALARM = 0x40,
00166 POST_ACTION_ALARM = 0x50
00167 };
00168 enum SubType
00169 {
00170 INVALID__ALARM = INVALID_ALARM,
00171 MAIN__ALARM = MAIN_ALARM,
00172
00173 REMINDER__ALARM = REMINDER_ALARM,
00174 TIMED_DEFERRAL_FLAG = 0x08,
00175 DEFERRED_DATE__ALARM = DEFERRED_ALARM,
00176 DEFERRED_TIME__ALARM = DEFERRED_ALARM | TIMED_DEFERRAL_FLAG,
00177 DEFERRED_REMINDER_DATE__ALARM = REMINDER_ALARM | DEFERRED_ALARM,
00178 DEFERRED_REMINDER_TIME__ALARM = REMINDER_ALARM | DEFERRED_ALARM | TIMED_DEFERRAL_FLAG,
00179
00180
00181 AT_LOGIN__ALARM = AT_LOGIN_ALARM,
00182 DISPLAYING__ALARM = DISPLAYING_ALARM,
00183
00184 AUDIO__ALARM = AUDIO_ALARM,
00185 PRE_ACTION__ALARM = PRE_ACTION_ALARM,
00186 POST_ACTION__ALARM = POST_ACTION_ALARM
00187 };
00188
00189 KAAlarm() : mType(INVALID__ALARM), mDeferred(false) { }
00190 KAAlarm(const KAAlarm&);
00191 ~KAAlarm() { }
00192 Action action() const { return (Action)mActionType; }
00193 bool valid() const { return mType != INVALID__ALARM; }
00194 Type type() const { return static_cast<Type>(mType & ~TIMED_DEFERRAL_FLAG); }
00195 SubType subType() const { return mType; }
00196 const QString& eventID() const { return mEventID; }
00197 const DateTime& dateTime() const { return mNextMainDateTime; }
00198 QDate date() const { return mNextMainDateTime.date(); }
00199 QTime time() const { return mNextMainDateTime.time(); }
00200 QString audioFile() const { return (mActionType == T_AUDIO) && !mBeep ? mText : QString::null; }
00201 float soundVolume() const { return (mActionType == T_AUDIO) && !mBeep && !mText.isEmpty() ? mSoundVolume : -1; }
00202 float fadeVolume() const { return (mActionType == T_AUDIO) && mSoundVolume >= 0 && mFadeSeconds && !mBeep && !mText.isEmpty() ? mFadeVolume : -1; }
00203 int fadeSeconds() const { return (mActionType == T_AUDIO) && mSoundVolume >= 0 && mFadeVolume >= 0 && !mBeep && !mText.isEmpty() ? mFadeSeconds : 0; }
00204 bool repeatSound() const { return (mActionType == T_AUDIO) && mRepeatSound && !mBeep && !mText.isEmpty(); }
00205 bool reminder() const { return mType == REMINDER__ALARM; }
00206 bool deferred() const { return mDeferred; }
00207 void setTime(const DateTime& dt) { mNextMainDateTime = dt; }
00208 void setTime(const QDateTime& dt) { mNextMainDateTime = dt; }
00209 int flags() const;
00210 #ifdef NDEBUG
00211 void dumpDebug() const { }
00212 static const char* debugType(Type) { return ""; }
00213 #else
00214 void dumpDebug() const;
00215 static const char* debugType(Type);
00216 #endif
00217
00218 private:
00219 SubType mType;
00220 bool mRecurs;
00221 bool mDeferred;
00222
00223 friend class KAEvent;
00224 };
00225
00226
00228 class KAEvent : public KAAlarmEventBase
00229 {
00230 public:
00231 enum
00232 {
00233 #ifdef OLD_DCOP
00234
00235
00236
00237 LATE_CANCEL = 0x01,
00238 #endif
00239 BEEP = 0x02,
00240 REPEAT_AT_LOGIN = 0x04,
00241 ANY_TIME = 0x08,
00242 CONFIRM_ACK = 0x10,
00243 EMAIL_BCC = 0x20,
00244 DEFAULT_FONT = 0x40,
00245 REPEAT_SOUND = 0x80,
00246 DISABLED = 0x100,
00247 AUTO_CLOSE = 0x200,
00248 SCRIPT = 0x400,
00249 EXEC_IN_XTERM = 0x800,
00250 SPEAK = 0x1000,
00251 COPY_KORGANIZER = 0x2000,
00252 #ifdef OLD_DCOP
00253
00254 #else
00255
00256 #endif
00257 REMINDER = 0x10000,
00258 DEFERRAL = 0x20000,
00259 TIMED_FLAG = 0x40000,
00260 DATE_DEFERRAL = DEFERRAL,
00261 TIME_DEFERRAL = DEFERRAL | TIMED_FLAG,
00262 DISPLAYING_ = 0x80000,
00263 READ_ONLY_FLAGS = 0xF0000
00264 };
00266 enum Status
00267 {
00268 ACTIVE,
00269 EXPIRED,
00270 DISPLAYING,
00271 TEMPLATE,
00272 KORGANIZER
00273 };
00274 enum Action
00275 {
00276 MESSAGE = T_MESSAGE,
00277 FILE = T_FILE,
00278 COMMAND = T_COMMAND,
00279 EMAIL = T_EMAIL
00280 };
00281 enum OccurType
00282 {
00283 NO_OCCURRENCE = 0,
00284 FIRST_OR_ONLY_OCCURRENCE = 0x01,
00285 RECURRENCE_DATE = 0x02,
00286 RECURRENCE_DATE_TIME = 0x03,
00287 LAST_RECURRENCE = 0x04,
00288 OCCURRENCE_REPEAT = 0x10,
00289 FIRST_OR_ONLY_OCCURRENCE_REPEAT = OCCURRENCE_REPEAT | FIRST_OR_ONLY_OCCURRENCE,
00290 RECURRENCE_DATE_REPEAT = OCCURRENCE_REPEAT | RECURRENCE_DATE,
00291 RECURRENCE_DATE_TIME_REPEAT = OCCURRENCE_REPEAT | RECURRENCE_DATE_TIME,
00292 LAST_RECURRENCE_REPEAT = OCCURRENCE_REPEAT | LAST_RECURRENCE
00293 };
00294 enum OccurOption
00295 {
00296 IGNORE_REPETITION,
00297 RETURN_REPETITION,
00298 ALLOW_FOR_REPETITION
00299 };
00300 enum DeferLimitType
00301 {
00302 LIMIT_NONE,
00303 LIMIT_MAIN,
00304 LIMIT_RECURRENCE,
00305 LIMIT_REPETITION,
00306 LIMIT_REMINDER
00307 };
00308
00309 KAEvent() : mRevision(0), mRecurrence(0), mAlarmCount(0) { }
00310 KAEvent(const QDateTime& dt, const QString& message, const QColor& bg, const QColor& fg, const QFont& f, Action action, int lateCancel, int flags)
00311 : mRecurrence(0) { set(dt, message, bg, fg, f, action, lateCancel, flags); }
00312 explicit KAEvent(const KCal::Event& e) : mRecurrence(0) { set(e); }
00313 KAEvent(const KAEvent& e) : KAAlarmEventBase(e), mRecurrence(0) { copy(e); }
00314 ~KAEvent() { delete mRecurrence; }
00315 KAEvent& operator=(const KAEvent& e) { if (&e != this) copy(e); return *this; }
00316 void set(const KCal::Event&);
00317 void set(const QDate& d, const QString& message, const QColor& bg, const QColor& fg, const QFont& f, Action action, int lateCancel, int flags)
00318 { set(d, message, bg, fg, f, action, lateCancel, flags | ANY_TIME); }
00319 void set(const QDateTime&, const QString& message, const QColor& bg, const QColor& fg, const QFont&, Action, int lateCancel, int flags);
00320 void setMessage(const QDate& d, const QString& message, const QColor& bg, const QColor& fg, const QFont& f, int lateCancel, int flags)
00321 { set(d, message, bg, fg, f, MESSAGE, lateCancel, flags | ANY_TIME); }
00322 void setMessage(const QDateTime& dt, const QString& message, const QColor& bg, const QColor& fg, const QFont& f, int lateCancel, int flags)
00323 { set(dt, message, bg, fg, f, MESSAGE, lateCancel, flags); }
00324 void setFileName(const QDate& d, const QString& filename, const QColor& bg, const QColor& fg, const QFont& f, int lateCancel, int flags)
00325 { set(d, filename, bg, fg, f, FILE, lateCancel, flags | ANY_TIME); }
00326 void setFileName(const QDateTime& dt, const QString& filename, const QColor& bg, const QColor& fg, const QFont& f, int lateCancel, int flags)
00327 { set(dt, filename, bg, fg, f, FILE, lateCancel, flags); }
00328 void setCommand(const QDate&, const QString& command, int lateCancel, int flags, const QString& logfile = QString::null);
00329 void setCommand(const QDateTime&, const QString& command, int lateCancel, int flags, const QString& logfile = QString::null);
00330 void setEmail(const QDate&, const QString& from, const EmailAddressList&, const QString& subject,
00331 const QString& message, const QStringList& attachments, int lateCancel, int flags);
00332 void setEmail(const QDateTime&, const QString& from, const EmailAddressList&, const QString& subject,
00333 const QString& message, const QStringList& attachments, int lateCancel, int flags);
00334 void setEmail(const QString& from, const EmailAddressList&, const QString& subject, const QStringList& attachments);
00335 void setAudioFile(const QString& filename, float volume, float fadeVolume, int fadeSeconds);
00336 void setTemplate(const QString& name, int afterTime = -1) { mTemplateName = name; mTemplateAfterTime = afterTime; mUpdated = true; }
00337 void setActions(const QString& pre, const QString& post) { mPreAction = pre; mPostAction = post; mUpdated = true; }
00338 OccurType setNextOccurrence(const QDateTime& preDateTime, bool includeRepetitions = false);
00339 void setFirstRecurrence();
00340 void setEventID(const QString& id) { mEventID = id; mUpdated = true; }
00341 void adjustStartDate(const QDate&);
00342 void setDate(const QDate& d) { mNextMainDateTime.set(d); mUpdated = true; }
00343 void setTime(const QDateTime& dt) { mNextMainDateTime.set(dt); mUpdated = true; }
00344 void setSaveDateTime(const QDateTime& dt) { mSaveDateTime = dt; mUpdated = true; }
00345 void setLateCancel(int lc) { mLateCancel = lc; mUpdated = true; }
00346 void setAutoClose(bool ac) { mAutoClose = ac; mUpdated = true; }
00347 void setRepeatAtLogin(bool rl) { mRepeatAtLogin = rl; mUpdated = true; }
00348 void set(int flags);
00349 void setUid(Status s) { mEventID = uid(mEventID, s); mUpdated = true; }
00350 void setKMailSerialNumber(unsigned long n) { mKMailSerialNumber = n; }
00351 void setLogFile(const QString& logfile);
00352 void setReminder(int minutes, bool onceOnly);
00353 bool defer(const DateTime&, bool reminder, bool adjustRecurrence = false);
00354 void cancelDefer();
00355 void cancelCancelledDeferral();
00356 void setDeferDefaultMinutes(int minutes) { mDeferDefaultMinutes = minutes; mUpdated = true; }
00357 bool setDisplaying(const KAEvent&, KAAlarm::Type, const QDateTime&);
00358 void reinstateFromDisplaying(const KAEvent& dispEvent);
00359 void setArchive() { mArchive = true; mUpdated = true; }
00360 void setEnabled(bool enable) { mEnabled = enable; mUpdated = true; }
00361 void setUpdated() { mUpdated = true; }
00362 void clearUpdated() const { mUpdated = false; }
00363 void removeExpiredAlarm(KAAlarm::Type);
00364 void incrementRevision() { ++mRevision; mUpdated = true; }
00365
00366 KCal::Event* event() const;
00367 bool isTemplate() const { return !mTemplateName.isEmpty(); }
00368 const QString& templateName() const { return mTemplateName; }
00369 bool usingDefaultTime() const { return mTemplateAfterTime == 0; }
00370 int templateAfterTime() const { return mTemplateAfterTime; }
00371 KAAlarm alarm(KAAlarm::Type) const;
00372 KAAlarm firstAlarm() const;
00373 KAAlarm nextAlarm(const KAAlarm& al) const { return nextAlarm(al.type()); }
00374 KAAlarm nextAlarm(KAAlarm::Type) const;
00375 KAAlarm convertDisplayingAlarm() const;
00376 bool updateKCalEvent(KCal::Event&, bool checkUid = true, bool original = false, bool cancelCancelledDefer = false) const;
00377 Action action() const { return (Action)mActionType; }
00378 bool displayAction() const { return mActionType == T_MESSAGE || mActionType == T_FILE; }
00379 const QString& id() const { return mEventID; }
00380 bool valid() const { return mAlarmCount && (mAlarmCount != 1 || !mRepeatAtLogin); }
00381 int alarmCount() const { return mAlarmCount; }
00382 const DateTime& startDateTime() const { return mStartDateTime; }
00383 const DateTime& mainDateTime() const { return mNextMainDateTime; }
00384 QDate mainDate() const { return mNextMainDateTime.date(); }
00385 QTime mainTime() const { return mNextMainDateTime.time(); }
00386 DateTime mainEndRepeatTime() const { return mRepeatCount ? mNextMainDateTime.addSecs(mRepeatCount * mRepeatInterval * 60) : mNextMainDateTime; }
00387 int reminder() const { return mReminderMinutes; }
00388 bool reminderOnceOnly() const { return mReminderOnceOnly; }
00389 bool reminderDeferral() const { return mDeferral == REMINDER_DEFERRAL; }
00390 int reminderArchived() const { return mArchiveReminderMinutes; }
00391 DateTime deferDateTime() const { return mDeferralTime; }
00392 DateTime deferralLimit(DeferLimitType* = 0) const;
00393 int deferDefaultMinutes() const { return mDeferDefaultMinutes; }
00394 DateTime nextDateTime(bool includeReminders = true) const;
00395 const QString& messageFileOrCommand() const { return mText; }
00396 QString logFile() const { return mLogFile; }
00397 bool commandXterm() const { return mCommandXterm; }
00398 unsigned long kmailSerialNumber() const { return mKMailSerialNumber; }
00399 bool copyToKOrganizer() const { return mCopyToKOrganizer; }
00400 const QString& audioFile() const { return mAudioFile; }
00401 float soundVolume() const { return !mAudioFile.isEmpty() ? mSoundVolume : -1; }
00402 float fadeVolume() const { return !mAudioFile.isEmpty() && mSoundVolume >= 0 && mFadeSeconds ? mFadeVolume : -1; }
00403 int fadeSeconds() const { return !mAudioFile.isEmpty() && mSoundVolume >= 0 && mFadeVolume >= 0 ? mFadeSeconds : 0; }
00404 bool repeatSound() const { return mRepeatSound && !mAudioFile.isEmpty(); }
00405 const QString& preAction() const { return mPreAction; }
00406 const QString& postAction() const { return mPostAction; }
00407 bool recurs() const { return checkRecur() != KARecurrence::NO_RECUR; }
00408 KARecurrence::Type recurType() const { return checkRecur(); }
00409 KARecurrence* recurrence() const { return mRecurrence; }
00410 int recurInterval() const;
00411 int longestRecurrenceInterval() const { return mRecurrence ? mRecurrence->longestInterval() : 0; }
00412 QString recurrenceText(bool brief = false) const;
00413 QString repetitionText(bool brief = false) const;
00414 int remainingRecurrences() const { return mRemainingRecurrences; }
00415 bool occursAfter(const QDateTime& preDateTime, bool includeRepetitions) const;
00416 OccurType nextOccurrence(const QDateTime& preDateTime, DateTime& result, OccurOption = IGNORE_REPETITION) const;
00417 OccurType previousOccurrence(const QDateTime& afterDateTime, DateTime& result, bool includeRepetitions = false) const;
00418 int flags() const;
00419 bool deferred() const { return mDeferral > 0; }
00420 bool toBeArchived() const { return mArchive; }
00421 bool enabled() const { return mEnabled; }
00422 bool updated() const { return mUpdated; }
00423 bool mainExpired() const { return mMainExpired; }
00424 bool expired() const { return mDisplaying && mMainExpired || uidStatus(mEventID) == EXPIRED; }
00425 Status uidStatus() const { return uidStatus(mEventID); }
00426 static Status uidStatus(const QString& uid);
00427 static QString uid(const QString& id, Status);
00428 static KAEvent findTemplateName(AlarmCalendar&, const QString& name);
00429
00430 struct MonthPos
00431 {
00432 MonthPos() : days(7) { }
00433 int weeknum;
00434 QBitArray days;
00435 };
00436 bool setRepetition(int interval, int count);
00437 void setNoRecur() { clearRecur(); }
00438 void setRecurrence(const KARecurrence&);
00439 bool setRecurMinutely(int freq, int count, const QDateTime& end);
00440 bool setRecurDaily(int freq, const QBitArray& days, int count, const QDate& end);
00441 bool setRecurWeekly(int freq, const QBitArray& days, int count, const QDate& end);
00442 bool setRecurMonthlyByDate(int freq, const QValueList<int>& days, int count, const QDate& end);
00443 bool setRecurMonthlyByPos(int freq, const QValueList<MonthPos>& pos, int count, const QDate& end);
00444 bool setRecurAnnualByDate(int freq, const QValueList<int>& months, int day, KARecurrence::Feb29Type, int count, const QDate& end);
00445 bool setRecurAnnualByPos(int freq, const QValueList<MonthPos>& pos, const QValueList<int>& months, int count, const QDate& end);
00446
00447 #ifdef NDEBUG
00448 void dumpDebug() const { }
00449 #else
00450 void dumpDebug() const;
00451 #endif
00452 static int calVersion();
00453 static QString calVersionString();
00454 static bool adjustStartOfDay(const KCal::Event::List&);
00455 static void convertKCalEvents(KCal::Calendar&, int version, bool adjustSummerTime);
00456
00457 private:
00458 enum DeferType {
00459 CANCEL_DEFERRAL = -1,
00460 NO_DEFERRAL = 0,
00461 NORMAL_DEFERRAL,
00462 REMINDER_DEFERRAL
00463 };
00464
00465 void copy(const KAEvent&);
00466 bool setRecur(KCal::RecurrenceRule::PeriodType, int freq, int count, const QDateTime& end, KARecurrence::Feb29Type = KARecurrence::FEB29_FEB29);
00467 void clearRecur();
00468 KARecurrence::Type checkRecur() const;
00469 OccurType nextRecurrence(const QDateTime& preDateTime, DateTime& result, int& remainingCount) const;
00470 OccurType previousRecurrence(const QDateTime& afterDateTime, DateTime& result) const;
00471 KCal::Alarm* initKcalAlarm(KCal::Event&, const DateTime&, const QStringList& types, KAAlarm::Type = KAAlarm::INVALID_ALARM) const;
00472 KCal::Alarm* initKcalAlarm(KCal::Event&, int startOffsetSecs, const QStringList& types, KAAlarm::Type = KAAlarm::INVALID_ALARM) const;
00473 static void readAlarms(const KCal::Event&, void* alarmMap);
00474 static void readAlarm(const KCal::Alarm&, AlarmData&);
00475 inline void set_deferral(DeferType);
00476 inline void set_reminder(int minutes);
00477 inline void set_archiveReminder();
00478
00479 QString mTemplateName;
00480 QString mAudioFile;
00481 QString mPreAction;
00482 QString mPostAction;
00483 DateTime mStartDateTime;
00484 QDateTime mSaveDateTime;
00485 QDateTime mAtLoginDateTime;
00486 DateTime mDeferralTime;
00487 DateTime mDisplayingTime;
00488 int mDisplayingFlags;
00489 int mReminderMinutes;
00490 int mArchiveReminderMinutes;
00491 int mDeferDefaultMinutes;
00492 int mRevision;
00493 KARecurrence* mRecurrence;
00494 int mRemainingRecurrences;
00495 int mAlarmCount;
00496 DeferType mDeferral;
00497 unsigned long mKMailSerialNumber;
00498 int mTemplateAfterTime;
00499 QString mLogFile;
00500 bool mCommandXterm;
00501 bool mCopyToKOrganizer;
00502 bool mReminderOnceOnly;
00503 bool mMainExpired;
00504 bool mArchiveRepeatAtLogin;
00505 bool mArchive;
00506 bool mEnabled;
00507 mutable bool mUpdated;
00508 };
00509
00510 #endif // KALARMEVENT_H