KCal Library
incidencebase.h
Go to the documentation of this file.00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00054 #ifndef KCAL_INCIDENCEBASE_H
00055 #define KCAL_INCIDENCEBASE_H
00056
00057 #include "attendee.h"
00058 #include "customproperties.h"
00059 #include "duration.h"
00060 #include "sortablelist.h"
00061
00062 #include <kdatetime.h>
00063
00064 #include <QtCore/QStringList>
00065 #include <QtCore/QByteArray>
00066
00067 class KUrl;
00068
00069 namespace KCal {
00070
00072 typedef SortableList<QDate> DateList;
00074 typedef SortableList<KDateTime> DateTimeList;
00075 class Event;
00076 class Todo;
00077 class Journal;
00078 class FreeBusy;
00079
00102 class KCAL_EXPORT IncidenceBase : public CustomProperties
00103 {
00104 public:
00112 class KCAL_EXPORT Visitor
00113 {
00114 public:
00116 virtual ~Visitor() {}
00117
00123 virtual bool visit( Event *event );
00124
00130 virtual bool visit( Todo *todo );
00131
00137 virtual bool visit( Journal *journal );
00138
00144 virtual bool visit( FreeBusy *freebusy );
00145
00146 protected:
00151 Visitor() {}
00152 };
00153
00157 class IncidenceObserver
00158 {
00159 public:
00160
00164 virtual ~IncidenceObserver() {}
00165
00171 virtual void incidenceUpdated( IncidenceBase *incidenceBase ) = 0;
00172 };
00173
00177 IncidenceBase();
00178
00185 IncidenceBase( const IncidenceBase &ib );
00186
00190 virtual ~IncidenceBase();
00191
00195 IncidenceBase &operator=( const IncidenceBase &other );
00196
00202 bool operator==( const IncidenceBase &ib ) const;
00203
00213 virtual bool accept( Visitor &v )
00214 {
00215 Q_UNUSED( v );
00216 return false;
00217 }
00218
00222 virtual QByteArray type() const = 0;
00223
00231 void setUid( const QString &uid );
00232
00238 QString uid() const;
00239
00243 KUrl uri() const;
00244
00253 void setLastModified( const KDateTime &lm );
00254
00260 KDateTime lastModified() const;
00261
00268 void setOrganizer( const Person &organizer );
00269
00276 void setOrganizer( const QString &organizer );
00277
00283 Person organizer() const;
00284
00292 virtual void setReadOnly( bool readOnly );
00293
00298 bool isReadOnly() const { return mReadOnly; }
00299
00308 virtual void setDtStart( const KDateTime &dtStart );
00309
00314 virtual KDateTime dtStart() const;
00315
00325 virtual QString dtStartTimeStr( bool shortfmt = true,
00326 const KDateTime::Spec &spec = KDateTime::Spec() ) const;
00327
00337 virtual QString dtStartDateStr( bool shortfmt = true,
00338 const KDateTime::Spec &spec = KDateTime::Spec() ) const;
00339
00349 virtual QString dtStartStr( bool shortfmt = true,
00350 const KDateTime::Spec &spec = KDateTime::Spec() ) const;
00351
00359 virtual void setDuration( const Duration &duration );
00360
00366 Duration duration() const;
00367
00375 void setHasDuration( bool hasDuration );
00376
00382 bool hasDuration() const;
00383
00390 bool allDay() const;
00391
00400 void setAllDay( bool allDay );
00401
00416 virtual void shiftTimes( const KDateTime::Spec &oldSpec,
00417 const KDateTime::Spec &newSpec );
00418
00426 void addComment( const QString &comment );
00427
00436 bool removeComment( const QString &comment );
00437
00441 void clearComments();
00442
00446 QStringList comments() const;
00447
00455 void addAttendee( Attendee *attendee, bool doUpdate = true );
00456
00460 void clearAttendees();
00461
00465 const Attendee::List &attendees() const;
00466
00470 int attendeeCount() const;
00471
00479 Attendee *attendeeByMail( const QString &email ) const;
00480
00491 Attendee *attendeeByMails( const QStringList &emails,
00492 const QString &email = QString() ) const;
00493
00500 Attendee *attendeeByUid( const QString &uid ) const;
00501
00510 void registerObserver( IncidenceObserver *observer );
00511
00519 void unRegisterObserver( IncidenceObserver *observer );
00520
00525 void updated();
00526
00532 void startUpdates();
00533
00539 void endUpdates();
00540
00541 protected:
00546 virtual void customPropertyUpdated();
00547
00551 bool mReadOnly;
00552
00553 private:
00554
00555 class Private;
00556 Private *const d;
00557
00558 };
00559
00560 }
00561
00562 #endif