libkcal
incidencebase.h00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022 #ifndef KCAL_INCIDENCEBASE_H
00023 #define KCAL_INCIDENCEBASE_H
00024
00025 #include <qdatetime.h>
00026 #include <qstringlist.h>
00027 #include <qvaluelist.h>
00028 #include <qptrlist.h>
00029
00030 #include "customproperties.h"
00031 #include "attendee.h"
00032
00033 namespace KCal {
00034
00035 typedef QValueList<QDate> DateList;
00036 typedef QValueList<QDateTime> DateTimeList;
00037 class Event;
00038 class Todo;
00039 class Journal;
00040 class FreeBusy;
00041
00045 class LIBKCAL_EXPORT IncidenceBase : public CustomProperties
00046 {
00047 public:
00054 class Visitor
00055 {
00056 public:
00058 virtual ~Visitor() {}
00059
00064 virtual bool visit(Event *) { return false; }
00069 virtual bool visit(Todo *) { return false; }
00074 virtual bool visit(Journal *) { return false; }
00079 virtual bool visit(FreeBusy *) { return false; }
00080
00081 protected:
00083 Visitor() {}
00084 };
00085
00086 class Observer {
00087 public:
00088 virtual ~Observer() {}
00089 virtual void incidenceUpdated( IncidenceBase * ) = 0;
00090 virtual void incidenceUpdatedSilent( IncidenceBase * ) {};
00091 };
00092
00093 IncidenceBase();
00094 IncidenceBase( const IncidenceBase & );
00095 virtual ~IncidenceBase();
00096
00097 IncidenceBase& operator=( const IncidenceBase &i );
00098 bool operator==( const IncidenceBase & ) const;
00099
00107 virtual bool accept(Visitor &) { return false; }
00108
00109 virtual QCString type() const = 0;
00110
00112 void setUid( const QString & );
00114 QString uid() const;
00115
00117 void setLastModified( const QDateTime &lm );
00119 QDateTime lastModified() const;
00120
00122 void setOrganizer( const Person &o );
00123 void setOrganizer( const QString &o );
00124 Person organizer() const;
00125
00127 virtual void setReadOnly( bool );
00129 bool isReadOnly() const { return mReadOnly; }
00130
00132 virtual void setDtStart( const QDateTime &dtStart );
00135 virtual QDateTime dtStart() const;
00136
00142 virtual KDE_DEPRECATED QString dtStartTimeStr() const;
00143
00149 virtual KDE_DEPRECATED QString dtStartDateStr( bool shortfmt = true ) const;
00155 virtual KDE_DEPRECATED QString dtStartStr() const;
00156
00157 virtual void setDuration( int seconds );
00158 int duration() const;
00159 void setHasDuration( bool );
00160 bool hasDuration() const;
00161
00164 bool doesFloat() const;
00166 void setFloats( bool f );
00167
00168
00169
00170
00171
00179 void addComment(const QString& comment);
00180
00189 bool removeComment( const QString& comment );
00190
00192 void clearComments();
00193
00195 QStringList comments() const;
00196
00204 void addAttendee( Attendee *attendee, bool doUpdate = true );
00208 void clearAttendees();
00212 const Attendee::List &attendees() const { return mAttendees; };
00216 int attendeeCount() const { return mAttendees.count(); };
00220 Attendee *attendeeByMail( const QString & ) const;
00224 Attendee *attendeeByMails( const QStringList &,
00225 const QString &email = QString::null ) const;
00229 Attendee *attendeeByUid( const QString &uid ) const;
00230
00234 enum { SYNCNONE = 0, SYNCMOD = 1, SYNCDEL = 3 };
00238 void setSyncStatus( int status );
00239 void setSyncStatusSilent( int status );
00243 int syncStatus() const;
00244
00248 void setPilotId( unsigned long id );
00252 unsigned long pilotId() const;
00253
00258 void registerObserver( Observer * );
00262 void unRegisterObserver( Observer * );
00267 void updated();
00268 void updatedSilent();
00269
00270
00271 QPtrList<Observer> observers() const;
00272
00273 protected:
00278 virtual void customPropertyUpdated();
00279
00280 bool mReadOnly;
00281
00282 private:
00283
00284 QDateTime mDtStart;
00285 Person mOrganizer;
00286 QString mUid;
00287 QDateTime mLastModified;
00288 Attendee::List mAttendees;
00289 QStringList mComments;
00290
00291 bool mFloats;
00292
00293 int mDuration;
00294 bool mHasDuration;
00295
00296
00297 unsigned long mPilotId;
00298 int mSyncStatus;
00299
00300 QPtrList<Observer> mObservers;
00301
00302 class Private;
00303 Private *d;
00304 };
00305
00306 }
00307
00308 #endif
|