summaryrefslogtreecommitdiffabout
path: root/libkcal/incidence.h
Unidiff
Diffstat (limited to 'libkcal/incidence.h') (more/less context) (ignore whitespace changes)
-rw-r--r--libkcal/incidence.h1
1 files changed, 1 insertions, 0 deletions
diff --git a/libkcal/incidence.h b/libkcal/incidence.h
index 7dc6f10..1807bc4 100644
--- a/libkcal/incidence.h
+++ b/libkcal/incidence.h
@@ -1,298 +1,299 @@
1/* 1/*
2 This file is part of libkcal. 2 This file is part of libkcal.
3 Copyright (c) 2001 Cornelius Schumacher <schumacher@kde.org> 3 Copyright (c) 2001 Cornelius Schumacher <schumacher@kde.org>
4 4
5 This library is free software; you can redistribute it and/or 5 This library is free software; you can redistribute it and/or
6 modify it under the terms of the GNU Library General Public 6 modify it under the terms of the GNU Library General Public
7 License as published by the Free Software Foundation; either 7 License as published by the Free Software Foundation; either
8 version 2 of the License, or (at your option) any later version. 8 version 2 of the License, or (at your option) any later version.
9 9
10 This library is distributed in the hope that it will be useful, 10 This library is distributed in the hope that it will be useful,
11 but WITHOUT ANY WARRANTY; without even the implied warranty of 11 but WITHOUT ANY WARRANTY; without even the implied warranty of
12 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 12 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
13 Library General Public License for more details. 13 Library General Public License for more details.
14 14
15 You should have received a copy of the GNU Library General Public License 15 You should have received a copy of the GNU Library General Public License
16 along with this library; see the file COPYING.LIB. If not, write to 16 along with this library; see the file COPYING.LIB. If not, write to
17 the Free Software Foundation, Inc., 59 Temple Place - Suite 330, 17 the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
18 Boston, MA 02111-1307, USA. 18 Boston, MA 02111-1307, USA.
19*/ 19*/
20#ifndef INCIDENCE_H 20#ifndef INCIDENCE_H
21#define INCIDENCE_H 21#define INCIDENCE_H
22// 22//
23// Incidence - base class of calendaring components 23// Incidence - base class of calendaring components
24// 24//
25 25
26#include <qdatetime.h> 26#include <qdatetime.h>
27#include <qstringlist.h> 27#include <qstringlist.h>
28#include <qvaluelist.h> 28#include <qvaluelist.h>
29 29
30#include "recurrence.h" 30#include "recurrence.h"
31#include "alarm.h" 31#include "alarm.h"
32#include "attachment.h" 32#include "attachment.h"
33#include "listbase.h" 33#include "listbase.h"
34#include "incidencebase.h" 34#include "incidencebase.h"
35 35
36namespace KCal { 36namespace KCal {
37 37
38class Event; 38class Event;
39class Todo; 39class Todo;
40class Journal; 40class Journal;
41 41
42/** 42/**
43 This class provides the base class common to all calendar components. 43 This class provides the base class common to all calendar components.
44*/ 44*/
45class Incidence : public IncidenceBase 45class Incidence : public IncidenceBase
46{ 46{
47 public: 47 public:
48 /** 48 /**
49 This class provides the interface for a visitor of calendar components. It 49 This class provides the interface for a visitor of calendar components. It
50 serves as base class for concrete visitors, which implement certain actions on 50 serves as base class for concrete visitors, which implement certain actions on
51 calendar components. It allows to add functions, which operate on the concrete 51 calendar components. It allows to add functions, which operate on the concrete
52 types of calendar components, without changing the calendar component classes. 52 types of calendar components, without changing the calendar component classes.
53 */ 53 */
54 class Visitor 54 class Visitor
55 { 55 {
56 public: 56 public:
57 /** Destruct Incidence::Visitor */ 57 /** Destruct Incidence::Visitor */
58 virtual ~Visitor() {} 58 virtual ~Visitor() {}
59 59
60 /** 60 /**
61 Reimplement this function in your concrete subclass of IncidenceVisitor to perform actions 61 Reimplement this function in your concrete subclass of IncidenceVisitor to perform actions
62 on an Event object. 62 on an Event object.
63 */ 63 */
64 virtual bool visit(Event *) { return false; } 64 virtual bool visit(Event *) { return false; }
65 /** 65 /**
66 Reimplement this function in your concrete subclass of IncidenceVisitor to perform actions 66 Reimplement this function in your concrete subclass of IncidenceVisitor to perform actions
67 on an Todo object. 67 on an Todo object.
68 */ 68 */
69 virtual bool visit(Todo *) { return false; } 69 virtual bool visit(Todo *) { return false; }
70 /** 70 /**
71 Reimplement this function in your concrete subclass of IncidenceVisitor to perform actions 71 Reimplement this function in your concrete subclass of IncidenceVisitor to perform actions
72 on an Journal object. 72 on an Journal object.
73 */ 73 */
74 virtual bool visit(Journal *) { return false; } 74 virtual bool visit(Journal *) { return false; }
75 75
76 protected: 76 protected:
77 /** Constructor is protected to prevent direct creation of visitor base class. */ 77 /** Constructor is protected to prevent direct creation of visitor base class. */
78 Visitor() {} 78 Visitor() {}
79 }; 79 };
80 80
81 /** 81 /**
82 This class implements a visitor for adding an Incidence to a resource 82 This class implements a visitor for adding an Incidence to a resource
83 supporting addEvent(), addTodo() and addJournal() calls. 83 supporting addEvent(), addTodo() and addJournal() calls.
84 */ 84 */
85 template<class T> 85 template<class T>
86 class AddVisitor : public Visitor 86 class AddVisitor : public Visitor
87 { 87 {
88 public: 88 public:
89 AddVisitor( T *r ) : mResource( r ) {} 89 AddVisitor( T *r ) : mResource( r ) {}
90 bool visit( Event *e ) { return mResource->addEvent( e ); } 90 bool visit( Event *e ) { return mResource->addEvent( e ); }
91 bool visit( Todo *t ) { return mResource->addTodo( t ); } 91 bool visit( Todo *t ) { return mResource->addTodo( t ); }
92 bool visit( Journal *j ) { return mResource->addJournal( j ); } 92 bool visit( Journal *j ) { return mResource->addJournal( j ); }
93 93
94 private: 94 private:
95 T *mResource; 95 T *mResource;
96 }; 96 };
97 97
98 /** enumeration for describing an event's secrecy. */ 98 /** enumeration for describing an event's secrecy. */
99 enum { SecrecyPublic = 0, SecrecyPrivate = 1, SecrecyConfidential = 2 }; 99 enum { SecrecyPublic = 0, SecrecyPrivate = 1, SecrecyConfidential = 2 };
100 typedef ListBase<Incidence> List; 100 typedef ListBase<Incidence> List;
101 Incidence(); 101 Incidence();
102 Incidence(const Incidence &); 102 Incidence(const Incidence &);
103 ~Incidence(); 103 ~Incidence();
104 104
105 /** 105 /**
106 Accept IncidenceVisitor. A class taking part in the visitor mechanism has to 106 Accept IncidenceVisitor. A class taking part in the visitor mechanism has to
107 provide this implementation: 107 provide this implementation:
108 <pre> 108 <pre>
109 bool accept(Visitor &v) { return v.visit(this); } 109 bool accept(Visitor &v) { return v.visit(this); }
110 </pre> 110 </pre>
111 */ 111 */
112 virtual bool accept(Visitor &) { return false; } 112 virtual bool accept(Visitor &) { return false; }
113 113
114 virtual Incidence *clone() = 0; 114 virtual Incidence *clone() = 0;
115 115
116 virtual QDateTime getNextAlarmDateTime( bool * ok, int * offset ) const = 0; 116 virtual QDateTime getNextAlarmDateTime( bool * ok, int * offset ) const = 0;
117 void setReadOnly( bool ); 117 void setReadOnly( bool );
118 118
119 /** 119 /**
120 Recreate event. The event is made a new unique event, but already stored 120 Recreate event. The event is made a new unique event, but already stored
121 event information is preserved. Sets uniquie id, creation date, last 121 event information is preserved. Sets uniquie id, creation date, last
122 modification date and revision number. 122 modification date and revision number.
123 */ 123 */
124 void recreate(); 124 void recreate();
125 Incidence* recreateCloneException(QDate);
125 126
126 /** set creation date */ 127 /** set creation date */
127 void setCreated(QDateTime); 128 void setCreated(QDateTime);
128 /** return time and date of creation. */ 129 /** return time and date of creation. */
129 QDateTime created() const; 130 QDateTime created() const;
130 131
131 /** set the number of revisions this event has seen */ 132 /** set the number of revisions this event has seen */
132 void setRevision(int rev); 133 void setRevision(int rev);
133 /** return the number of revisions this event has seen */ 134 /** return the number of revisions this event has seen */
134 int revision() const; 135 int revision() const;
135 136
136 /** Set starting date/time. */ 137 /** Set starting date/time. */
137 virtual void setDtStart(const QDateTime &dtStart); 138 virtual void setDtStart(const QDateTime &dtStart);
138 /** Return the incidence's ending date/time as a QDateTime. */ 139 /** Return the incidence's ending date/time as a QDateTime. */
139 virtual QDateTime dtEnd() const { return QDateTime(); } 140 virtual QDateTime dtEnd() const { return QDateTime(); }
140 141
141 /** sets the event's lengthy description. */ 142 /** sets the event's lengthy description. */
142 void setDescription(const QString &description); 143 void setDescription(const QString &description);
143 /** returns a reference to the event's description. */ 144 /** returns a reference to the event's description. */
144 QString description() const; 145 QString description() const;
145 146
146 /** sets the event's short summary. */ 147 /** sets the event's short summary. */
147 void setSummary(const QString &summary); 148 void setSummary(const QString &summary);
148 /** returns a reference to the event's summary. */ 149 /** returns a reference to the event's summary. */
149 QString summary() const; 150 QString summary() const;
150 151
151 /** set event's applicable categories */ 152 /** set event's applicable categories */
152 void setCategories(const QStringList &categories); 153 void setCategories(const QStringList &categories);
153 /** set event's categories based on a comma delimited string */ 154 /** set event's categories based on a comma delimited string */
154 void setCategories(const QString &catStr); 155 void setCategories(const QString &catStr);
155 /** return categories in a list */ 156 /** return categories in a list */
156 QStringList categories() const; 157 QStringList categories() const;
157 /** return categories as a comma separated string */ 158 /** return categories as a comma separated string */
158 QString categoriesStr(); 159 QString categoriesStr();
159 160
160 /** point at some other event to which the event relates. This function should 161 /** point at some other event to which the event relates. This function should
161 * only be used when constructing a calendar before the related Event 162 * only be used when constructing a calendar before the related Event
162 * exists. */ 163 * exists. */
163 void setRelatedToUid(const QString &); 164 void setRelatedToUid(const QString &);
164 /** what event does this one relate to? This function should 165 /** what event does this one relate to? This function should
165 * only be used when constructing a calendar before the related Event 166 * only be used when constructing a calendar before the related Event
166 * exists. */ 167 * exists. */
167 QString relatedToUid() const; 168 QString relatedToUid() const;
168 /** point at some other event to which the event relates */ 169 /** point at some other event to which the event relates */
169 void setRelatedTo(Incidence *relatedTo); 170 void setRelatedTo(Incidence *relatedTo);
170 /** what event does this one relate to? */ 171 /** what event does this one relate to? */
171 Incidence *relatedTo() const; 172 Incidence *relatedTo() const;
172 /** All events that are related to this event */ 173 /** All events that are related to this event */
173 QPtrList<Incidence> relations() const; 174 QPtrList<Incidence> relations() const;
174 /** Add an event which is related to this event */ 175 /** Add an event which is related to this event */
175 void addRelation(Incidence *); 176 void addRelation(Incidence *);
176 /** Remove event that is related to this event */ 177 /** Remove event that is related to this event */
177 void removeRelation(Incidence *); 178 void removeRelation(Incidence *);
178 179
179 /** returns the list of dates which are exceptions to the recurrence rule */ 180 /** returns the list of dates which are exceptions to the recurrence rule */
180 DateList exDates() const; 181 DateList exDates() const;
181 /** sets the list of dates which are exceptions to the recurrence rule */ 182 /** sets the list of dates which are exceptions to the recurrence rule */
182 void setExDates(const DateList &_exDates); 183 void setExDates(const DateList &_exDates);
183 void setExDates(const char *dates); 184 void setExDates(const char *dates);
184 /** Add a date to the list of exceptions of the recurrence rule. */ 185 /** Add a date to the list of exceptions of the recurrence rule. */
185 void addExDate(const QDate &date); 186 void addExDate(const QDate &date);
186 187
187 /** returns true if there is an exception for this date in the recurrence 188 /** returns true if there is an exception for this date in the recurrence
188 rule set, or false otherwise. */ 189 rule set, or false otherwise. */
189 bool isException(const QDate &qd) const; 190 bool isException(const QDate &qd) const;
190 191
191 /** add attachment to this event */ 192 /** add attachment to this event */
192 void addAttachment(Attachment *attachment); 193 void addAttachment(Attachment *attachment);
193 /** remove and delete a specific attachment */ 194 /** remove and delete a specific attachment */
194 void deleteAttachment(Attachment *attachment); 195 void deleteAttachment(Attachment *attachment);
195 /** remove and delete all attachments with this mime type */ 196 /** remove and delete all attachments with this mime type */
196 void deleteAttachments(const QString& mime); 197 void deleteAttachments(const QString& mime);
197 /** return list of all associated attachments */ 198 /** return list of all associated attachments */
198 QPtrList<Attachment> attachments() const; 199 QPtrList<Attachment> attachments() const;
199 /** find a list of attachments with this mime type */ 200 /** find a list of attachments with this mime type */
200 QPtrList<Attachment> attachments(const QString& mime) const; 201 QPtrList<Attachment> attachments(const QString& mime) const;
201 202
202 /** sets the event's status the value specified. See the enumeration 203 /** sets the event's status the value specified. See the enumeration
203 * above for possible values. */ 204 * above for possible values. */
204 void setSecrecy(int); 205 void setSecrecy(int);
205 /** return the event's secrecy. */ 206 /** return the event's secrecy. */
206 int secrecy() const; 207 int secrecy() const;
207 /** return the event's secrecy in string format. */ 208 /** return the event's secrecy in string format. */
208 QString secrecyStr() const; 209 QString secrecyStr() const;
209 /** return list of all availbale secrecy classes */ 210 /** return list of all availbale secrecy classes */
210 static QStringList secrecyList(); 211 static QStringList secrecyList();
211 /** return human-readable name of secrecy class */ 212 /** return human-readable name of secrecy class */
212 static QString secrecyName(int); 213 static QString secrecyName(int);
213 214
214 /** returns TRUE if the date specified is one on which the event will 215 /** returns TRUE if the date specified is one on which the event will
215 * recur. */ 216 * recur. */
216 bool recursOn(const QDate &qd) const; 217 bool recursOn(const QDate &qd) const;
217 218
218 // VEVENT and VTODO, but not VJOURNAL (move to EventBase class?): 219 // VEVENT and VTODO, but not VJOURNAL (move to EventBase class?):
219 220
220 /** set resources used, such as Office, Car, etc. */ 221 /** set resources used, such as Office, Car, etc. */
221 void setResources(const QStringList &resources); 222 void setResources(const QStringList &resources);
222 /** return list of current resources */ 223 /** return list of current resources */
223 QStringList resources() const; 224 QStringList resources() const;
224 225
225 /** set the event's priority, 0 is undefined, 1 highest (decreasing order) */ 226 /** set the event's priority, 0 is undefined, 1 highest (decreasing order) */
226 void setPriority(int priority); 227 void setPriority(int priority);
227 /** get the event's priority */ 228 /** get the event's priority */
228 int priority() const; 229 int priority() const;
229 230
230 /** All alarms that are associated with this incidence */ 231 /** All alarms that are associated with this incidence */
231 QPtrList<Alarm> alarms() const; 232 QPtrList<Alarm> alarms() const;
232 /** Create a new alarm which is associated with this incidence */ 233 /** Create a new alarm which is associated with this incidence */
233 Alarm* newAlarm(); 234 Alarm* newAlarm();
234 /** Add an alarm which is associated with this incidence */ 235 /** Add an alarm which is associated with this incidence */
235 void addAlarm(Alarm*); 236 void addAlarm(Alarm*);
236 /** Remove an alarm that is associated with this incidence */ 237 /** Remove an alarm that is associated with this incidence */
237 void removeAlarm(Alarm*); 238 void removeAlarm(Alarm*);
238 /** Remove all alarms that are associated with this incidence */ 239 /** Remove all alarms that are associated with this incidence */
239 void clearAlarms(); 240 void clearAlarms();
240 /** return whether any alarm associated with this incidence is enabled */ 241 /** return whether any alarm associated with this incidence is enabled */
241 bool isAlarmEnabled() const; 242 bool isAlarmEnabled() const;
242 243
243 /** 244 /**
244 Return the recurrence rule associated with this incidence. If there is 245 Return the recurrence rule associated with this incidence. If there is
245 none, returns an appropriate (non-0) object. 246 none, returns an appropriate (non-0) object.
246 */ 247 */
247 Recurrence *recurrence() const; 248 Recurrence *recurrence() const;
248 void setRecurrence(Recurrence * r); 249 void setRecurrence(Recurrence * r);
249 /** 250 /**
250 Forward to Recurrence::doesRecur(). 251 Forward to Recurrence::doesRecur().
251 */ 252 */
252 ushort doesRecur() const; 253 ushort doesRecur() const;
253 254
254 /** set the event's/todo's location. Do _not_ use it with journal */ 255 /** set the event's/todo's location. Do _not_ use it with journal */
255 void setLocation(const QString &location); 256 void setLocation(const QString &location);
256 /** return the event's/todo's location. Do _not_ use it with journal */ 257 /** return the event's/todo's location. Do _not_ use it with journal */
257 QString location() const; 258 QString location() const;
258 /** returns TRUE or FALSE depending on whether the todo has a start date */ 259 /** returns TRUE or FALSE depending on whether the todo has a start date */
259 bool hasStartDate() const; 260 bool hasStartDate() const;
260 /** sets the event's hasStartDate value. */ 261 /** sets the event's hasStartDate value. */
261 void setHasStartDate(bool f); 262 void setHasStartDate(bool f);
262 QDateTime getNextOccurence( const QDateTime& dt, bool* yes ) const; 263 QDateTime getNextOccurence( const QDateTime& dt, bool* yes ) const;
263 bool cancelled() const; 264 bool cancelled() const;
264 void setCancelled( bool b ); 265 void setCancelled( bool b );
265 266
266protected: 267protected:
267 QPtrList<Alarm> mAlarms; 268 QPtrList<Alarm> mAlarms;
268 private: 269 private:
269 int mRevision; 270 int mRevision;
270 bool mCancelled; 271 bool mCancelled;
271 272
272 // base components of jounal, event and todo 273 // base components of jounal, event and todo
273 QDateTime mCreated; 274 QDateTime mCreated;
274 QString mDescription; 275 QString mDescription;
275 QString mSummary; 276 QString mSummary;
276 QStringList mCategories; 277 QStringList mCategories;
277 Incidence *mRelatedTo; 278 Incidence *mRelatedTo;
278 QString mRelatedToUid; 279 QString mRelatedToUid;
279 QPtrList<Incidence> mRelations; 280 QPtrList<Incidence> mRelations;
280 DateList mExDates; 281 DateList mExDates;
281 QPtrList<Attachment> mAttachments; 282 QPtrList<Attachment> mAttachments;
282 QStringList mResources; 283 QStringList mResources;
283 bool mHasStartDate; // if todo has associated start date 284 bool mHasStartDate; // if todo has associated start date
284 285
285 int mSecrecy; 286 int mSecrecy;
286 int mPriority; // 1 = highest, 2 = less, etc. 287 int mPriority; // 1 = highest, 2 = less, etc.
287 288
288 //QPtrList<Alarm> mAlarms; 289 //QPtrList<Alarm> mAlarms;
289 Recurrence *mRecurrence; 290 Recurrence *mRecurrence;
290 291
291 QString mLocation; 292 QString mLocation;
292}; 293};
293 294
294bool operator==( const Incidence&, const Incidence& ); 295bool operator==( const Incidence&, const Incidence& );
295 296
296} 297}
297 298
298#endif 299#endif