00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
#ifndef INCIDENCE_H
00022
#define INCIDENCE_H
00023
00024
#include <qdatetime.h>
00025
#include <qstringlist.h>
00026
#include <qvaluelist.h>
00027
00028
#include "recurrence.h"
00029
#include "alarm.h"
00030
#include "attachment.h"
00031
00032
#include "incidencebase.h"
00033
00034
namespace KCal {
00035
00036
class Event;
00037
class Todo;
00038
class Journal;
00039
00043 class Incidence :
public IncidenceBase
00044 {
00045
public:
00052 class Visitor
00053 {
00054
public:
00056 virtual ~Visitor() {}
00057
00062 virtual bool visit(
Event *) {
return false; }
00067 virtual bool visit(
Todo *) {
return false; }
00072 virtual bool visit(
Journal *) {
return false; }
00073
00074
protected:
00076 Visitor() {}
00077 };
00078
00083
template<
class T>
00084 class AddVisitor :
public Visitor
00085 {
00086
public:
00087
AddVisitor( T *r ) : mResource( r ) {}
00088
00089 bool visit(
Event *e ) {
return mResource->addEvent( e ); }
00090 bool visit(
Todo *t ) {
return mResource->addTodo( t ); }
00091 bool visit(
Journal *j ) {
return mResource->addJournal( j ); }
00092
00093
private:
00094 T *mResource;
00095 };
00096
00101
template<
class T>
00102 class DeleteVisitor :
public Visitor
00103 {
00104
public:
00105
DeleteVisitor( T *r ) : mResource( r ) {}
00106
00107 bool visit(
Event *e ) { mResource->deleteEvent( e );
return true; }
00108 bool visit(
Todo *t ) { mResource->deleteTodo( t );
return true; }
00109 bool visit(
Journal *j ) { mResource->deleteJournal( j );
return true; }
00110
00111
private:
00112 T *mResource;
00113 };
00114
00116 enum Status {
00117 StatusNone, StatusTentative, StatusConfirmed, StatusCompleted,
00118 StatusNeedsAction, StatusCanceled, StatusInProcess, StatusDraft,
00119 StatusFinal,
00120 StatusX
00121 };
00122
00124
enum { SecrecyPublic = 0, SecrecyPrivate = 1, SecrecyConfidential = 2 };
00125
00126
typedef ListBase<Incidence> List;
00127
00128
Incidence();
00129
Incidence(
const Incidence & );
00130 ~
Incidence();
00131
00132
bool operator==(
const Incidence & ) const;
00133
00141 virtual
bool accept(
Visitor &) {
return false; }
00142
00146
virtual Incidence *
clone() = 0;
00147
00154
void setReadOnly(
bool );
00155
00161
void recreate();
00162
00166
void setCreated(
const QDateTime & );
00170
QDateTime created() const;
00171
00175
void setRevision(
int rev );
00179
int revision() const;
00180
00184 virtual
void setDtStart( const
QDateTime &dtStart );
00188 virtual
QDateTime dtEnd()
const {
return QDateTime(); }
00189
00193
void setDescription(
const QString &description );
00197
QString description() const;
00198
00202
void setSummary( const
QString &summary );
00206
QString summary() const;
00207
00211
void setCategories( const
QStringList &categories );
00215
void setCategories(const
QString &catStr);
00219
QStringList categories() const;
00223
QString categoriesStr() const;
00224
00230
void setRelatedToUid(const
QString &);
00236 QString relatedToUid() const;
00240
void setRelatedTo(
Incidence *relatedTo);
00244
Incidence *relatedTo() const;
00248
Incidence::List relations() const;
00252
void addRelation(
Incidence *);
00256
void removeRelation(Incidence *);
00257
00261
DateList exDates() const;
00266
DateTimeList exDateTimes() const;
00271
void setExDates( const
DateList &exDates );
00276
void setExDateTimes( const
DateTimeList &exDateTimes );
00280
void addExDate( const
QDate &date );
00284
void addExDateTime( const
QDateTime &dateTime );
00285
00290
bool isException( const
QDate &qd ) const;
00295
bool isException( const
QDateTime &qdt ) const;
00296
00300
void addAttachment(
Attachment *attachment );
00304
void deleteAttachment(
Attachment *attachment );
00308
void deleteAttachments( const QString &mime );
00312
Attachment::List attachments() const;
00316
Attachment::List attachments( const QString &mime ) const;
00320
void clearAttachments();
00321
00326
void setSecrecy(
int );
00330
int secrecy() const;
00334 QString secrecyStr() const;
00338 static
QStringList secrecyList();
00342 static QString secrecyName(
int );
00343
00348
void setStatus( Status status );
00354
void setCustomStatus( const QString &status );
00358 Status status() const;
00362 QString statusStr() const;
00366 static QString statusName( Status );
00367
00372
bool recursOn( const
QDate &qd ) const;
00377
bool recursAt( const
QDateTime &qdt ) const;
00378
00379
00380
00384
void setResources( const
QStringList &resources );
00388
QStringList resources() const;
00389
00393
void setPriority(
int priority );
00398
int priority() const;
00399
00403 const
Alarm::List &alarms() const;
00407
Alarm *newAlarm();
00411
void addAlarm(
Alarm * );
00415
void removeAlarm( Alarm * );
00419
void clearAlarms();
00423
bool isAlarmEnabled() const;
00424
00429
Recurrence *recurrence() const;
00430
00434 ushort doesRecur() const;
00435
00439
void setLocation(const QString &location);
00443 QString location() const;
00444
00445 private:
00446
int mRevision;
00447
00448
00449
QDateTime mCreated;
00450 QString mDescription;
00451 QString mSummary;
00452
QStringList mCategories;
00453 Incidence *mRelatedTo;
00454 QString mRelatedToUid;
00455 Incidence::List mRelations;
00456
DateList mExDates;
00457
DateTimeList mExDateTimes;
00458
Attachment::List mAttachments;
00459
QStringList mResources;
00460
00461 QString mStatusString;
00462 Status mStatus;
00463
int mSecrecy;
00464
int mPriority;
00465
00466 Alarm::List mAlarms;
00467
Recurrence *mRecurrence;
00468
00469 QString mLocation;
00470
00471 class Private;
00472 Private *d;
00473 };
00474
00475 }
00476
00477 #endif