00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023 #ifndef KCAL_ALARM_H
00024 #define KCAL_ALARM_H
00025
00026 #include <tqstring.h>
00027 #include <tqstringlist.h>
00028 #include <tqvaluelist.h>
00029
00030 #include "customproperties.h"
00031 #include "duration.h"
00032 #include "person.h"
00033 #include "listbase.h"
00034 #include "libkcal_export.h"
00035
00036 #include <tdepimmacros.h>
00037
00038 namespace KCal {
00039
00040 class Incidence;
00041
00045 class LIBKCAL_EXPORT Alarm : public CustomProperties
00046 {
00047 public:
00048 enum Type { Invalid, Display, Procedure, Email, Audio };
00049
00050 typedef ListBase<Alarm> List;
00051
00055 explicit Alarm( Incidence *parent );
00059 virtual ~Alarm();
00060
00065 Alarm *clone();
00066
00071 Alarm &operator=( const Alarm & );
00072
00076 bool operator==( const Alarm & ) const;
00077 bool operator!=( const Alarm &a ) const { return !operator==( a ); }
00078
00086 void setType( Type type );
00087
00091 Type type() const;
00092
00098 void setDisplayAlarm( const TQString &text = TQString() );
00099
00104 void setText( const TQString &text );
00105
00109 TQString text() const;
00110
00116 void setAudioAlarm( const TQString &audioFile = TQString() );
00121 void setAudioFile( const TQString &audioFile );
00127 TQString audioFile() const;
00128
00135 void setProcedureAlarm( const TQString &programFile,
00136 const TQString &arguments = TQString() );
00141 void setProgramFile( const TQString &programFile );
00147 TQString programFile() const;
00152 void setProgramArguments( const TQString &arguments );
00158 TQString programArguments() const;
00159
00168 void setEmailAlarm( const TQString &subject, const TQString &text,
00169 const TQValueList<Person> &addressees,
00170 const TQStringList &attachments = TQStringList() );
00171
00176 void setMailAddress( const Person &mailAlarmAddress );
00181 void setMailAddresses( const TQValueList<Person> &mailAlarmAddresses );
00186 void addMailAddress( const Person &mailAlarmAddress );
00190 TQValueList<Person> mailAddresses() const;
00191
00196 void setMailSubject( const TQString &mailAlarmSubject );
00200 TQString mailSubject() const;
00201
00206 void setMailAttachment( const TQString &mailAttachFile );
00211 void setMailAttachments( const TQStringList &mailAttachFiles );
00216 void addMailAttachment( const TQString &mailAttachFile );
00220 TQStringList mailAttachments() const;
00221
00226 void setMailText( const TQString &text );
00232 TQString mailText() const;
00233
00237 void setTime( const TQDateTime &alarmTime );
00241 TQDateTime time() const;
00246 TQDateTime endTime() const;
00250 bool hasTime() const;
00251
00255 void setStartOffset( const Duration & );
00261 Duration startOffset() const;
00266 bool hasStartOffset() const;
00267
00271 void setEndOffset( const Duration & );
00277 Duration endOffset() const;
00282 bool hasEndOffset() const;
00283
00289 void setSnoozeTime( const Duration &alarmSnoozeTime );
00290
00296 Duration snoozeTime() const;
00297
00302 void setRepeatCount( int alarmRepeatCount );
00306 int repeatCount() const;
00314 TQDateTime nextRepetition(const TQDateTime& preTime) const;
00322 TQDateTime previousRepetition(const TQDateTime& afterTime) const;
00327 Duration duration() const;
00328
00333 void toggleAlarm();
00334
00338 void setEnabled(bool enable);
00342 bool enabled() const;
00343
00347 void setParent( Incidence * );
00351 Incidence *parent() const { return mParent; }
00352
00353 protected:
00358 virtual void customPropertyUpdated();
00359
00360 private:
00361 Incidence *mParent;
00362 Type mType;
00363 TQString mDescription;
00364 TQString mFile;
00365 TQStringList mMailAttachFiles;
00366 TQValueList<Person> mMailAddresses;
00367 TQString mMailSubject;
00368
00369 Duration mAlarmSnoozeTime;
00370
00371 int mAlarmRepeatCount;
00372
00373
00374 TQDateTime mAlarmTime;
00375 Duration mOffset;
00376 bool mEndOffset;
00377 bool mHasTime;
00378 bool mAlarmEnabled;
00379
00380 class Private;
00381 Private *d;
00382 };
00383
00384 }
00385
00386 #endif