KCal Library
incidence.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
00031 #ifndef INCIDENCE_H
00032 #define INCIDENCE_H
00033
00034 #include "kcal_export.h"
00035 #include "incidencebase.h"
00036 #include "alarm.h"
00037 #include "attachment.h"
00038 #include "recurrence.h"
00039
00040 #include <QtCore/QList>
00041 #include <QtCore/QMetaType>
00042
00043 namespace boost {
00044 template <typename T> class shared_ptr;
00045 }
00046
00047 namespace KCal {
00048
00068 class KCAL_EXPORT_DEPRECATED Incidence
00069 : public IncidenceBase, public Recurrence::RecurrenceObserver
00070 {
00071 public:
00076
00077 template<class T>
00078 class AddVisitor : public IncidenceBase::Visitor
00079 {
00080 public:
00081 AddVisitor( T *r ) : mResource( r ) {}
00082
00083 bool visit( Event *e )
00084 {
00085 return mResource->addEvent( e );
00086 }
00087 bool visit( Todo *t )
00088 {
00089 return mResource->addTodo( t );
00090 }
00091 bool visit( Journal *j )
00092 {
00093 return mResource->addJournal( j );
00094 }
00095 bool visit( FreeBusy * )
00096 {
00097 return false;
00098 }
00099
00100 private:
00101 T *mResource;
00102 };
00103
00104
00110
00111 template<class T>
00112 class DeleteVisitor : public IncidenceBase::Visitor
00113 {
00114 public:
00115 DeleteVisitor( T *r ) : mResource( r ) {}
00116
00117 bool visit( Event *e )
00118 {
00119 mResource->deleteEvent( e );
00120 return true;
00121 }
00122 bool visit( Todo *t )
00123 {
00124 mResource->deleteTodo( t );
00125 return true;
00126 }
00127 bool visit( Journal *j )
00128 {
00129 mResource->deleteJournal( j );
00130 return true;
00131 }
00132 bool visit( FreeBusy * )
00133 {
00134 return false;
00135 }
00136
00137 private:
00138 T *mResource;
00139 };
00140
00141
00146 enum Status {
00147 StatusNone,
00148 StatusTentative,
00149 StatusConfirmed,
00150 StatusCompleted,
00151 StatusNeedsAction,
00152 StatusCanceled,
00153 StatusInProcess,
00154 StatusDraft,
00155 StatusFinal,
00156 StatusX
00157 };
00158
00162 enum Secrecy {
00163 SecrecyPublic=0,
00164 SecrecyPrivate=1,
00165 SecrecyConfidential=2
00166 };
00167
00171 typedef ListBase<Incidence> List;
00172
00176 typedef boost::shared_ptr<Incidence> Ptr;
00177
00181 typedef boost::shared_ptr<const Incidence> ConstPtr;
00182
00186 Incidence();
00187
00192 Incidence( const Incidence &other );
00193
00197 ~Incidence();
00198
00203 virtual Incidence *clone() = 0;
00204
00211 void setReadOnly( bool readonly );
00212
00217 void setAllDay( bool allDay );
00218
00224 void recreate();
00225
00232 void setCreated( const KDateTime &dt );
00233
00238 KDateTime created() const;
00239
00246 void setRevision( int rev );
00247
00252 int revision() const;
00253
00260 virtual void setDtStart( const KDateTime &dt );
00261
00266 virtual KDateTime dtEnd() const;
00267
00272 virtual void shiftTimes( const KDateTime::Spec &oldSpec,
00273 const KDateTime::Spec &newSpec );
00274
00282 void setDescription( const QString &description, bool isRich );
00283
00292 void setDescription( const QString &description );
00293
00299 QString description() const;
00300
00307 QString richDescription() const;
00308
00313 bool descriptionIsRich() const;
00314
00322 void setSummary( const QString &summary, bool isRich );
00323
00331 void setSummary( const QString &summary );
00332
00338 QString summary() const;
00339
00346 QString richSummary() const;
00347
00352 bool summaryIsRich() const;
00353
00361 void setLocation( const QString &location, bool isRich );
00362
00371 void setLocation( const QString &location );
00372
00378 QString location() const;
00379
00386 QString richLocation() const;
00387
00392 bool locationIsRich() const;
00393
00400 void setCategories( const QStringList &categories );
00401
00409 void setCategories( const QString &catStr );
00410
00415 QStringList categories() const;
00416
00421 QString categoriesStr() const;
00422
00430 void setRelatedToUid( const QString &uid );
00431
00438 QString relatedToUid() const;
00439
00447 void setRelatedTo( Incidence *incidence );
00448
00455 Incidence *relatedTo() const;
00456
00461 Incidence::List relations() const;
00462
00469 void addRelation( Incidence *incidence );
00470
00477 void removeRelation( Incidence *incidence );
00478
00479
00480
00481
00482
00487 Recurrence *recurrence() const;
00488
00492 void clearRecurrence();
00493
00498 bool recurs() const;
00499
00504 ushort recurrenceType() const;
00505
00510 virtual bool recursOn( const QDate &date, const KDateTime::Spec &timeSpec ) const;
00511
00516 bool recursAt( const KDateTime &dt ) const;
00517
00529 virtual QList<KDateTime> startDateTimesForDate(
00530 const QDate &date,
00531 const KDateTime::Spec &timeSpec = KDateTime::LocalZone ) const;
00532
00542 virtual QList<KDateTime> startDateTimesForDateTime(
00543 const KDateTime &datetime ) const;
00544
00554 virtual KDateTime endDateForStart( const KDateTime &startDt ) const;
00555
00556
00557
00558
00559
00566 void addAttachment( Attachment *attachment );
00567
00575 void deleteAttachment( Attachment *attachment );
00576
00584 void deleteAttachments( const QString &mime );
00585
00590 Attachment::List attachments() const;
00591
00598 Attachment::List attachments( const QString &mime ) const;
00599
00604 void clearAttachments();
00605
00610 QString writeAttachmentToTempFile( Attachment *attachment ) const;
00611
00612 void clearTempFiles();
00613
00614
00615
00616
00617
00624 void setSecrecy( Secrecy secrecy );
00625
00630 Secrecy secrecy() const;
00631
00636 QString secrecyStr() const;
00637
00643 static QStringList secrecyList();
00644
00651 static QString secrecyName( Secrecy secrecy );
00652
00660 void setStatus( Status status );
00661
00669 void setCustomStatus( const QString &status );
00670
00675 Status status() const;
00676
00681 QString statusStr() const;
00682
00688 static QString statusName( Status status );
00689
00690
00691
00692
00693
00701 void setResources( const QStringList &resources );
00702
00707 QStringList resources() const;
00708
00717 void setPriority( int priority );
00718
00723 int priority() const;
00724
00730 bool hasGeo() const;
00731
00738 void setHasGeo( bool hasGeo );
00739
00746 void setGeoLatitude( float geolatitude );
00747
00754 float &geoLatitude() const;
00755
00762 void setGeoLongitude( float geolongitude );
00763
00770 float &geoLongitude() const;
00771
00772
00773
00774
00775
00779 const Alarm::List &alarms() const;
00780
00784 Alarm *newAlarm();
00785
00792 void addAlarm( Alarm *alarm );
00793
00800 void removeAlarm( Alarm *alarm );
00801
00806 void clearAlarms();
00807
00811 bool isAlarmEnabled() const;
00812
00813
00814
00815
00816
00829 void setSchedulingID( const QString &sid );
00830
00836 QString schedulingID() const;
00837
00845 virtual void recurrenceUpdated( Recurrence *recurrence );
00846
00858 Incidence &operator=( const Incidence &other );
00859
00860
00871 bool operator==( const Incidence &incidence ) const;
00872
00873
00874 protected:
00880 virtual KDateTime endDateRecurrenceBase() const
00881 {
00882 return dtStart();
00883 }
00884
00885 private:
00886 void init( const Incidence &other );
00887
00888 class Private;
00889 Private *const d;
00890
00891 };
00892
00893 }
00894
00895 #define KCAL_INCIDENCE_METATYPE_DEFINED 1
00896 Q_DECLARE_METATYPE( KCal::Incidence* )
00897
00898 #endif