diff options
Diffstat (limited to 'libkcal/alarm.h')
-rw-r--r-- | libkcal/alarm.h | 370 |
1 files changed, 370 insertions, 0 deletions
diff --git a/libkcal/alarm.h b/libkcal/alarm.h new file mode 100644 index 000000000..64970e639 --- /dev/null +++ b/libkcal/alarm.h @@ -0,0 +1,370 @@ +/* + This file is part of libkcal. + + Copyright (c) 2001-2003 Cornelius Schumacher <schumacher@kde.org> + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Library General Public + License as published by the Free Software Foundation; either + version 2 of the License, or (at your option) any later version. + + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Library General Public License for more details. + + You should have received a copy of the GNU Library General Public License + along with this library; see the file COPYING.LIB. If not, write to + the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, + Boston, MA 02110-1301, USA. +*/ + +#ifndef KCAL_ALARM_H +#define KCAL_ALARM_H + +#include <qstring.h> +#include <qstringlist.h> +#include <qvaluelist.h> + +#include "customproperties.h" +#include "duration.h" +#include "person.h" +#include "listbase.h" +#include "libkcal_export.h" + +#include <kdepimmacros.h> + +namespace KCal { + +class Incidence; + +/** + This class represents an alarm notification. +*/ +class LIBKCAL_EXPORT Alarm : public CustomProperties +{ + public: + enum Type { Invalid, Display, Procedure, Email, Audio }; + + typedef ListBase<Alarm> List; + + /** + Construct a new alarm with variables initialized to "sane" values. + */ + explicit Alarm( Incidence *parent ); + /** + Destruct Alarm object. + */ + ~Alarm(); + + /** + Compare this alarm with another one. + */ + bool operator==( const Alarm & ) const; + bool operator!=( const Alarm &a ) const { return !operator==( a ); } + + /** + Set the type of the alarm. + If the specified type is different from the current type of the alarm, + the alarm's type-specific properties are initialised to null. + + @param type type of alarm. + */ + void setType( Type type ); + /** + Return the type of the alarm. + */ + Type type() const; + + /** + Set the alarm to be a display alarm. + + @param text text to display when the alarm is triggered. + */ + void setDisplayAlarm( const QString &text = QString::null ); + /** + Set the text to be displayed when the alarm is triggered. + Ignored if the alarm is not a display alarm. + */ + void setText( const QString &text ); + /** + Return the text string that displays when the alarm is triggered. + */ + QString text() const; + + /** + Set the alarm to be an audio alarm. + + @param audioFile optional file to play when the alarm is triggered. + */ + void setAudioAlarm( const QString &audioFile = QString::null ); + /** + Set the file to play when the audio alarm is triggered. + Ignored if the alarm is not an audio alarm. + */ + void setAudioFile( const QString &audioFile ); + /** + Return the name of the audio file for the alarm. + + @return The audio file for the alarm, or QString::null if not an audio alarm. + */ + QString audioFile() const; + + /** + Set the alarm to be a procedure alarm. + + @param programFile program to execute when the alarm is triggered. + @param arguments arguments to supply to programFile. + */ + void setProcedureAlarm( const QString &programFile, + const QString &arguments = QString::null ); + /** + Set the program file to execute when the alarm is triggered. + Ignored if the alarm is not a procedure alarm. + */ + void setProgramFile( const QString &programFile ); + /** + Return the name of the program file to execute when the alarm is triggered. + + @return the program file name, or QString::null if not a procedure alarm. + */ + QString programFile() const; + /** + Set the arguments to the program to execute when the alarm is triggered. + Ignored if the alarm is not a procedure alarm. + */ + void setProgramArguments( const QString &arguments ); + /** + Return the arguments to the program to run when the alarm is triggered. + + @return the program arguments, or QString::null if not a procedure alarm. + */ + QString programArguments() const; + + /** + Set the alarm to be an email alarm. + + @param subject subject line of email. + @param text body of email. + @param addressees email addresses of recipient(s). + @param attachments optional names of files to attach to the email. + */ + void setEmailAlarm( const QString &subject, const QString &text, + const QValueList<Person> &addressees, + const QStringList &attachments = QStringList() ); + + /** + Send mail to this address when the alarm is triggered. + Ignored if the alarm is not an email alarm. + */ + void setMailAddress( const Person &mailAlarmAddress ); + /** + Send mail to these addresses when the alarm is triggered. + Ignored if the alarm is not an email alarm. + */ + void setMailAddresses( const QValueList<Person> &mailAlarmAddresses ); + /** + Add this address to the list of addresses to send mail to when the alarm is triggered. + Ignored if the alarm is not an email alarm. + */ + void addMailAddress( const Person &mailAlarmAddress ); + /** + Return the addresses to send mail to when an alarm goes off. + */ + QValueList<Person> mailAddresses() const; + + /** + Set the subject line of the mail. + Ignored if the alarm is not an email alarm. + */ + void setMailSubject( const QString &mailAlarmSubject ); + /** + Return the subject line of the mail. + */ + QString mailSubject() const; + + /** + Attach this filename to the email. + Ignored if the alarm is not an email alarm. + */ + void setMailAttachment( const QString &mailAttachFile ); + /** + Attach these filenames to the email. + Ignored if the alarm is not an email alarm. + */ + void setMailAttachments( const QStringList &mailAttachFiles ); + /** + Add this filename to the list of files to attach to the email. + Ignored if the alarm is not an email alarm. + */ + void addMailAttachment( const QString &mailAttachFile ); + /** + Return the filenames to attach to the email. + */ + QStringList mailAttachments() const; + + /** + Set the email body text. + Ignored if the alarm is not an email alarm. + */ + void setMailText( const QString &text ); + /** + Return the email body text. + + @return the body text, or QString::null if not an email alarm. + */ + QString mailText() const; + + /** + Set the time to trigger an alarm. + */ + void setTime( const QDateTime &alarmTime ); + /** + Return the date/time when an alarm goes off. + */ + QDateTime time() const; + /** + Return the date/time when the last repetition of the alarm goes off. + If the alarm does not repeat, this is equivalent to calling time(). + */ + QDateTime endTime() const; + /** + Return true, if the alarm has an explicit date/time. + */ + bool hasTime() const; + + /** + Set offset of alarm in time relative to the start of the event. + */ + void setStartOffset( const Duration & ); + /** + Return offset of alarm in time relative to the start of the event. + If the alarm's time is not defined in terms of an offset relative + to the start of the event, returns zero. + */ + Duration startOffset() const; + /** + Return whether the alarm is defined in terms of an offset relative + to the start of the event. + */ + bool hasStartOffset() const; + + /** + Set offset of alarm in time relative to the end of the event. + */ + void setEndOffset( const Duration & ); + /** + Return offset of alarm in time relative to the end of the event. + If the alarm's time is not defined in terms of an offset relative + to the end of the event, returns zero. + */ + Duration endOffset() const; + /** + Return whether the alarm is defined in terms of an offset relative + to the end of the event. + */ + bool hasEndOffset() const; + + /** + Set the interval between snoozes for the alarm. + + @param alarmSnoozeTime the time in minutes between snoozes. + */ + void setSnoozeTime( int alarmSnoozeTime ); + + /** + Get how long the alarm snooze interval is. + + @return the number of minutes between snoozes. + */ + int snoozeTime() const; + + /** + Set how many times an alarm is to repeat itself after its initial + occurrence (w/snoozes). + */ + void setRepeatCount( int alarmRepeatCount ); + /** + Get how many times an alarm repeats, after its initial occurrence. + */ + int repeatCount() const; + /** + Get the time of the alarm's initial occurrence or its next repetition, + after a given time. + @param preTime the date and time after which to find the next repetition. + @return the date and time of the next repetition, or an invalid date/time if + the specified time is at or after the alarm's last repetition. + */ + QDateTime nextRepetition(const QDateTime& preTime) const; + /** + Get the time of the alarm's latest repetition, or its initial occurrence if + none, before a given time. + @param afterTime the date and time before which to find the latest repetition. + @return the date and time of the latest repetition, or an invalid date/time if + the specified time is at or before the alarm's initial occurrence. + */ + QDateTime previousRepetition(const QDateTime& afterTime) const; + /** + Get how long between the alarm's initial occurrence and its final repetition. + @return the number of seconds between the initial occurrence and final repetition. + */ + int duration() const; + + /** + Toggles the value of alarm to be either on or off. + Set's the alarm time to be x minutes before dtStart time. + */ + void toggleAlarm(); + + /** + Set the alarm enabled status. + */ + void setEnabled(bool enable); + /** + Get the alarm enabled status. + */ + bool enabled() const; + + /** + Set the alarm's parent incidence. + */ + void setParent( Incidence * ); + /** + Get the alarm's parent incidence. + */ + Incidence *parent() const { return mParent; } + + protected: + /** + @copydoc + CustomProperties::customPropertyUpdated() + */ + virtual void customPropertyUpdated(); + + private: + Incidence *mParent; // the incidence which this alarm belongs to + Type mType; // type of alarm + QString mDescription; // text to display/email body/procedure arguments + QString mFile; // procedure program to run/optional audio file to play + QStringList mMailAttachFiles; // filenames to attach to email + QValueList<Person> mMailAddresses; // who to mail for reminder + QString mMailSubject; // subject of email + + int mAlarmSnoozeTime; // number of minutes after alarm to + // snooze before ringing again + int mAlarmRepeatCount; // number of times for alarm to repeat + // after the initial time + + QDateTime mAlarmTime; // time at which to trigger the alarm + Duration mOffset; // time relative to incidence DTSTART to trigger the alarm + bool mEndOffset; // if true, mOffset relates to DTEND, not DTSTART + bool mHasTime; // use mAlarmTime, not mOffset + bool mAlarmEnabled; + + class Private; + Private *d; +}; + +} + +#endif |