#ifndef OPIE_PIM_NOTIFY_H #define OPIE_PIM_NOTIFY_H #include <qdatetime.h> #include <qvaluelist.h> /** * This is the base class of Notifiers. Possible * notifiers would be Alarms, Reminders * What they share is that they have * A DateTime, Type, Duration * This is what this base class takes care of * on top of that it's shared */ /* * TALK to eilers: have a class OPimDuration which sets the Duration * given on the Due/Start Date? -zecke * discuss: do we need a uid for the notify? -zecke */ class OPimNotify { public: typedef QValueList<OPimNotify> ValueList; OPimNotify( const QDateTime& start = QDateTime(), int duration = 0, int parent = 0 ); OPimNotify( const OPimNotify& ); virtual ~OPimNotify(); OPimNotify &operator=(const OPimNotify& ); bool operator==( const OPimNotify& ); virtual QString type()const = 0; /** start date */ QDateTime dateTime()const; QString service()const; /** * RETURN the parent uid */ int parent()const; /** * in Seconds */ int duration()const; /** * Start Time + Duration */ QDateTime endTime()const; void setDateTime( const QDateTime& ); void setDuration( int dur ); void setParent(int uid ); void setService( const QString& ); private: inline void copyIntern(); void deref(); struct Data; Data* data; /* d-pointer */ class NotifyPrivate; NotifyPrivate* d; }; /** * An alarm is a sound/mail/buzzer played/send * at a given time to inform about * an Event */ class OPimAlarm : public OPimNotify { public: enum Sound{Loud=1, Silent=0, Custom=2 }; OPimAlarm( int sound = Silent, const QDateTime& start = QDateTime(), int duration = 0, int parent = 0 ); OPimAlarm( const OPimAlarm& ); ~OPimAlarm(); OPimAlarm &operator=( const OPimAlarm& ); bool operator==( const OPimAlarm& ); QString type()const; int sound()const; QString file()const; void setSound( int ); /* only when sound is custom... */ void setFile( const QString& sound ); private: void deref(); void copyIntern(); struct Data; Data * data; class Private; Private* d; }; /** * A Reminder will be put into the * datebook * Note that the returned dateTime() may be not valid. * In these cases one must resolve the uid and get the OEvent */ class OPimReminder : public OPimNotify { public: /** * c'tor of a reminder * @param uid The uid of the Record inside the Datebook * @param start the StartDate invalid for all day... * @param duration The duration of the event ( -1 for all day ) * @param parent The 'parent' record of this reminder */ OPimReminder( int uid = 0, const QDateTime& start = QDateTime(), int duration = 0, int parent = 0 ); OPimReminder( const OPimReminder& ); OPimReminder &operator=(const OPimReminder& ); QString type()const; bool operator==( const OPimReminder& ); /** * the uid of the alarm * inside the 'datebook' application */ int recordUid()const; void setRecordUid( int uid ); private: void deref(); void copyIntern(); struct Data; Data* data; class Private; Private *d; }; #endif