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 { SecrecyPublic = 0, SecrecyPrivate = 1, SecrecyConfidential = 2 };
00117
00118
typedef ListBase<Incidence> List;
00119
00120
Incidence();
00121
Incidence(
const Incidence & );
00122 ~
Incidence();
00123
00124
bool operator==(
const Incidence & ) const;
00125
00133 virtual
bool accept(
Visitor &) {
return false; }
00134
00138
virtual Incidence *
clone() = 0;
00139
00146
void setReadOnly(
bool );
00147
00153
void recreate();
00154
00158
void setCreated(
const QDateTime & );
00162 QDateTime
created() const;
00163
00167
void setRevision(
int rev );
00171
int revision() const;
00172
00176 virtual
void setDtStart( const QDateTime &dtStart );
00180 virtual QDateTime dtEnd()
const {
return QDateTime(); }
00181
00185
void setDescription(
const QString &description );
00189 QString
description() const;
00190
00194
void setSummary( const QString &summary );
00198 QString summary() const;
00199
00203
void setCategories( const QStringList &categories );
00207
void setCategories(const QString &catStr);
00211 QStringList categories() const;
00215 QString categoriesStr();
00216
00222
void setRelatedToUid(const QString &);
00228 QString relatedToUid() const;
00232
void setRelatedTo(
Incidence *relatedTo);
00236
Incidence *relatedTo() const;
00240
Incidence::List relations() const;
00244
void addRelation(
Incidence *);
00248
void removeRelation(Incidence *);
00249
00253 DateList exDates() const;
00258 DateTimeList exDateTimes() const;
00263
void setExDates( const DateList &exDates );
00268
void setExDateTimes( const DateTimeList &exDateTimes );
00272
void addExDate( const QDate &date );
00276
void addExDateTime( const QDateTime &dateTime );
00277
00282
bool isException( const QDate &qd ) const;
00287
bool isException( const QDateTime &qdt ) const;
00288
00292
void addAttachment(
Attachment *attachment );
00296
void deleteAttachment(
Attachment *attachment );
00300
void deleteAttachments( const QString &mime );
00304
Attachment::List attachments() const;
00308
Attachment::List attachments( const QString &mime ) const;
00312
void clearAttachments();
00313
00318
void setSecrecy(
int );
00322
int secrecy() const;
00326 QString secrecyStr() const;
00330 static QStringList secrecyList();
00334 static QString secrecyName(
int );
00335
00340
bool recursOn( const QDate &qd ) const;
00345
bool recursAt( const QDateTime &qdt ) const;
00346
00347
00348
00352
void setResources( const QStringList &resources );
00356 QStringList resources() const;
00357
00361
void setPriority(
int priority );
00366
int priority() const;
00367
00371 const
Alarm::List &alarms() const;
00375
Alarm *newAlarm();
00379
void addAlarm(
Alarm * );
00383
void removeAlarm( Alarm * );
00387
void clearAlarms();
00391
bool isAlarmEnabled() const;
00392
00397
Recurrence *recurrence() const;
00398
00402 ushort doesRecur() const;
00403
00407
void setLocation(const QString &location);
00411 QString location() const;
00412
00413 private:
00414
int mRevision;
00415
00416
00417 QDateTime mCreated;
00418 QString mDescription;
00419 QString mSummary;
00420 QStringList mCategories;
00421 Incidence *mRelatedTo;
00422 QString mRelatedToUid;
00423 Incidence::List mRelations;
00424 DateList mExDates;
00425 DateTimeList mExDateTimes;
00426
Attachment::List mAttachments;
00427 QStringList mResources;
00428
00429
int mSecrecy;
00430
int mPriority;
00431
00432 Alarm::List mAlarms;
00433
Recurrence *mRecurrence;
00434
00435 QString mLocation;
00436
00437 class Private;
00438 Private *d;
00439 };
00440
00441 }
00442
00443 #endif