summaryrefslogtreecommitdiffabout
path: root/libkcal/calendar.h
authorzautrix <zautrix>2005-06-10 20:13:31 (UTC)
committer zautrix <zautrix>2005-06-10 20:13:31 (UTC)
commitcdc55afb3d2c3ebd970843b7dce02acb1e6a189b (patch) (unidiff)
tree45f3bfa69a72de4e8b53bbcb2414478ec65cd183 /libkcal/calendar.h
parent31fed261955dcb25d06052a8154ac4cc630b0f7d (diff)
downloadkdepimpi-cdc55afb3d2c3ebd970843b7dce02acb1e6a189b.zip
kdepimpi-cdc55afb3d2c3ebd970843b7dce02acb1e6a189b.tar.gz
kdepimpi-cdc55afb3d2c3ebd970843b7dce02acb1e6a189b.tar.bz2
many preparations for multiple calendars
Diffstat (limited to 'libkcal/calendar.h') (more/less context) (ignore whitespace changes)
-rw-r--r--libkcal/calendar.h9
1 files changed, 8 insertions, 1 deletions
diff --git a/libkcal/calendar.h b/libkcal/calendar.h
index ab40970..4c6760f 100644
--- a/libkcal/calendar.h
+++ b/libkcal/calendar.h
@@ -1,359 +1,366 @@
1/* 1/*
2 This file is part of libkcal. 2 This file is part of libkcal.
3 Copyright (c) 1998 Preston Brown 3 Copyright (c) 1998 Preston Brown
4 Copyright (c) 2001 Cornelius Schumacher <schumacher@kde.org> 4 Copyright (c) 2001 Cornelius Schumacher <schumacher@kde.org>
5 5
6 This library is free software; you can redistribute it and/or 6 This library is free software; you can redistribute it and/or
7 modify it under the terms of the GNU Library General Public 7 modify it under the terms of the GNU Library General Public
8 License as published by the Free Software Foundation; either 8 License as published by the Free Software Foundation; either
9 version 2 of the License, or (at your option) any later version. 9 version 2 of the License, or (at your option) any later version.
10 10
11 This library is distributed in the hope that it will be useful, 11 This library is distributed in the hope that it will be useful,
12 but WITHOUT ANY WARRANTY; without even the implied warranty of 12 but WITHOUT ANY WARRANTY; without even the implied warranty of
13 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 13 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
14 Library General Public License for more details. 14 Library General Public License for more details.
15 15
16 You should have received a copy of the GNU Library General Public License 16 You should have received a copy of the GNU Library General Public License
17 along with this library; see the file COPYING.LIB. If not, write to 17 along with this library; see the file COPYING.LIB. If not, write to
18 the Free Software Foundation, Inc., 59 Temple Place - Suite 330, 18 the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
19 Boston, MA 02111-1307, USA. 19 Boston, MA 02111-1307, USA.
20*/ 20*/
21 21
22#ifndef CALENDAR_H 22#ifndef CALENDAR_H
23#define CALENDAR_H 23#define CALENDAR_H
24 24
25#include <qobject.h> 25#include <qobject.h>
26#include <qstring.h> 26#include <qstring.h>
27#include <qdatetime.h> 27#include <qdatetime.h>
28#include <qptrlist.h> 28#include <qptrlist.h>
29#include <qdict.h> 29#include <qdict.h>
30 30
31#include "customproperties.h" 31#include "customproperties.h"
32#include "event.h" 32#include "event.h"
33#include "todo.h" 33#include "todo.h"
34#include "journal.h" 34#include "journal.h"
35#include "calfilter.h" 35#include "calfilter.h"
36 36
37//#define _TIME_ZONE "-0500" /* hardcoded, overridden in config file. */ 37//#define _TIME_ZONE "-0500" /* hardcoded, overridden in config file. */
38 38
39class KConfig; 39class KConfig;
40 40
41namespace KCal { 41namespace KCal {
42 42
43 43
44/** 44/**
45 This is the main "calendar" object class for KOrganizer. It holds 45 This is the main "calendar" object class for KOrganizer. It holds
46 information like all appointments/events, user information, etc. etc. 46 information like all appointments/events, user information, etc. etc.
47 one calendar is associated with each CalendarView (@see calendarview.h). 47 one calendar is associated with each CalendarView (@see calendarview.h).
48 This is an abstract base class defining the interface to a calendar. It is 48 This is an abstract base class defining the interface to a calendar. It is
49 implemented by subclasses like @see CalendarLocal, which use different 49 implemented by subclasses like @see CalendarLocal, which use different
50 methods to store and access the data. 50 methods to store and access the data.
51 51
52 Ownership of events etc. is handled by the following policy: As soon as an 52 Ownership of events etc. is handled by the following policy: As soon as an
53 event (or any other subclass of IncidenceBase) object is added to the 53 event (or any other subclass of IncidenceBase) object is added to the
54 Calendar by addEvent() it is owned by the Calendar object. The Calendar takes 54 Calendar by addEvent() it is owned by the Calendar object. The Calendar takes
55 care of deleting it. All Events returned by the query functions are returned 55 care of deleting it. All Events returned by the query functions are returned
56 as pointers, that means all changes to the returned events are immediately 56 as pointers, that means all changes to the returned events are immediately
57 visible in the Calendar. You shouldn't delete any Event object you get from 57 visible in the Calendar. You shouldn't delete any Event object you get from
58 Calendar. 58 Calendar.
59*/ 59*/
60class Calendar : public QObject, public CustomProperties, 60class Calendar : public QObject, public CustomProperties,
61 public IncidenceBase::Observer 61 public IncidenceBase::Observer
62{ 62{
63 Q_OBJECT 63 Q_OBJECT
64public: 64public:
65 Calendar(); 65 Calendar();
66 Calendar(const QString &timeZoneId); 66 Calendar(const QString &timeZoneId);
67 virtual ~Calendar(); 67 virtual ~Calendar();
68 Incidence * undoIncidence() { return mUndoIncidence; }; 68 Incidence * undoIncidence() { return mUndoIncidence; };
69 bool undoDeleteIncidence(); 69 bool undoDeleteIncidence();
70 void deleteIncidence(Incidence *in); 70 void deleteIncidence(Incidence *in);
71 void resetTempSyncStat(); 71 void resetTempSyncStat();
72 void resetPilotStat(int id); 72 void resetPilotStat(int id);
73 /** 73 /**
74 Clears out the current calendar, freeing all used memory etc. 74 Clears out the current calendar, freeing all used memory etc.
75 */ 75 */
76 virtual void close() = 0; 76 virtual void close() = 0;
77 77
78 /** 78 /**
79 Sync changes in memory to persistant storage. 79 Sync changes in memory to persistant storage.
80 */ 80 */
81 virtual void save() = 0; 81 virtual void save() = 0;
82 virtual QPtrList<Event> getExternLastSyncEvents() = 0; 82 virtual QPtrList<Event> getExternLastSyncEvents() = 0;
83 virtual void removeSyncInfo( QString syncProfile) = 0; 83 virtual void removeSyncInfo( QString syncProfile) = 0;
84 virtual bool isSaving() { return false; } 84 virtual bool isSaving() { return false; }
85 85
86 /** 86 /**
87 Return the owner of the calendar's full name. 87 Return the owner of the calendar's full name.
88 */ 88 */
89 const QString &getOwner() const; 89 const QString &getOwner() const;
90 /** 90 /**
91 Set the owner of the calendar. Should be owner's full name. 91 Set the owner of the calendar. Should be owner's full name.
92 */ 92 */
93 void setOwner( const QString &os ); 93 void setOwner( const QString &os );
94 /** 94 /**
95 Return the email address of the calendar owner. 95 Return the email address of the calendar owner.
96 */ 96 */
97 const QString &getEmail(); 97 const QString &getEmail();
98 /** 98 /**
99 Set the email address of the calendar owner. 99 Set the email address of the calendar owner.
100 */ 100 */
101 void setEmail( const QString & ); 101 void setEmail( const QString & );
102 102
103 /** 103 /**
104 Set time zone from a timezone string (e.g. -2:00) 104 Set time zone from a timezone string (e.g. -2:00)
105 */ 105 */
106 void setTimeZone( const QString &tz ); 106 void setTimeZone( const QString &tz );
107 /** 107 /**
108 Set time zone from a minutes value (e.g. -60) 108 Set time zone from a minutes value (e.g. -60)
109 */ 109 */
110 void setTimeZone( int tz ); 110 void setTimeZone( int tz );
111 /** 111 /**
112 Return time zone as offest in minutes. 112 Return time zone as offest in minutes.
113 */ 113 */
114 int getTimeZone() const; 114 int getTimeZone() const;
115 /** 115 /**
116 Compute an ISO 8601 format string from the time zone. 116 Compute an ISO 8601 format string from the time zone.
117 */ 117 */
118 QString getTimeZoneStr() const; 118 QString getTimeZoneStr() const;
119 /** 119 /**
120 Set time zone id (see /usr/share/zoneinfo/zone.tab for list of legal 120 Set time zone id (see /usr/share/zoneinfo/zone.tab for list of legal
121 values). 121 values).
122 */ 122 */
123 void setTimeZoneId( const QString & ); 123 void setTimeZoneId( const QString & );
124 /** 124 /**
125 Return time zone id. 125 Return time zone id.
126 */ 126 */
127 QString timeZoneId() const; 127 QString timeZoneId() const;
128 /** 128 /**
129 Use local time, not UTC or a time zone. 129 Use local time, not UTC or a time zone.
130 */ 130 */
131 void setLocalTime(); 131 void setLocalTime();
132 /** 132 /**
133 Return whether local time is being used. 133 Return whether local time is being used.
134 */ 134 */
135 bool isLocalTime() const; 135 bool isLocalTime() const;
136 136
137 /** 137 /**
138 Add an incidence to calendar. 138 Add an incidence to calendar.
139 139
140 @return true on success, false on error. 140 @return true on success, false on error.
141 */ 141 */
142 virtual bool addIncidence( Incidence * ); 142 virtual bool addIncidence( Incidence * );
143 143
144 // Adds an incidence and all relatedto incidences to the cal 144 // Adds an incidence and all relatedto incidences to the cal
145 void addIncidenceBranch( Incidence * ); 145 void addIncidenceBranch( Incidence * );
146 /** 146 /**
147 Return filtered list of all incidences of this calendar. 147 Return filtered list of all incidences of this calendar.
148 */ 148 */
149 virtual QPtrList<Incidence> incidences(); 149 virtual QPtrList<Incidence> incidences();
150 150
151 /** 151 /**
152 Return unfiltered list of all incidences of this calendar. 152 Return unfiltered list of all incidences of this calendar.
153 */ 153 */
154 virtual QPtrList<Incidence> rawIncidences(); 154 virtual QPtrList<Incidence> rawIncidences();
155 155
156 /** 156 /**
157 Adds a Event to this calendar object. 157 Adds a Event to this calendar object.
158 @param anEvent a pointer to the event to add 158 @param anEvent a pointer to the event to add
159 159
160 @return true on success, false on error. 160 @return true on success, false on error.
161 */ 161 */
162 virtual bool addEventNoDup( Event *event ) = 0; 162 virtual bool addEventNoDup( Event *event ) = 0;
163 virtual bool addAnniversaryNoDup( Event *event ) = 0; 163 virtual bool addAnniversaryNoDup( Event *event ) = 0;
164 virtual bool addEvent( Event *anEvent ) = 0; 164 virtual bool addEvent( Event *anEvent ) = 0;
165 /** 165 /**
166 Delete event from calendar. 166 Delete event from calendar.
167 */ 167 */
168 virtual void deleteEvent( Event * ) = 0; 168 virtual void deleteEvent( Event * ) = 0;
169 /** 169 /**
170 Retrieves an event on the basis of the unique string ID. 170 Retrieves an event on the basis of the unique string ID.
171 */ 171 */
172 virtual Event *event( const QString &UniqueStr ) = 0; 172 virtual Event *event( const QString &UniqueStr ) = 0;
173 virtual Event *event( QString, QString ) = 0; 173 virtual Event *event( QString, QString ) = 0;
174 /** 174 /**
175 Builds and then returns a list of all events that match for the 175 Builds and then returns a list of all events that match for the
176 date specified. useful for dayView, etc. etc. 176 date specified. useful for dayView, etc. etc.
177 The calendar filter is applied. 177 The calendar filter is applied.
178 */ 178 */
179 QPtrList<Event> events( const QDate &date, bool sorted = false); 179 QPtrList<Event> events( const QDate &date, bool sorted = false);
180 /** 180 /**
181 Get events, which occur on the given date. 181 Get events, which occur on the given date.
182 The calendar filter is applied. 182 The calendar filter is applied.
183 */ 183 */
184 QPtrList<Event> events( const QDateTime &qdt ); 184 QPtrList<Event> events( const QDateTime &qdt );
185 /** 185 /**
186 Get events in a range of dates. If inclusive is set to true, only events 186 Get events in a range of dates. If inclusive is set to true, only events
187 are returned, which are completely included in the range. 187 are returned, which are completely included in the range.
188 The calendar filter is applied. 188 The calendar filter is applied.
189 */ 189 */
190 QPtrList<Event> events( const QDate &start, const QDate &end, 190 QPtrList<Event> events( const QDate &start, const QDate &end,
191 bool inclusive = false); 191 bool inclusive = false);
192 /** 192 /**
193 Return filtered list of all events in calendar. 193 Return filtered list of all events in calendar.
194 */ 194 */
195 virtual QPtrList<Event> events(); 195 virtual QPtrList<Event> events();
196 /** 196 /**
197 Return unfiltered list of all events in calendar. 197 Return unfiltered list of all events in calendar.
198 */ 198 */
199 virtual QPtrList<Event> rawEvents() = 0; 199 virtual QPtrList<Event> rawEvents() = 0;
200 200
201 /** 201 /**
202 Add a todo to the todolist. 202 Add a todo to the todolist.
203 203
204 @return true on success, false on error. 204 @return true on success, false on error.
205 */ 205 */
206 virtual bool addTodo( Todo *todo ) = 0; 206 virtual bool addTodo( Todo *todo ) = 0;
207 virtual bool addTodoNoDup( Todo *todo ) = 0; 207 virtual bool addTodoNoDup( Todo *todo ) = 0;
208 /** 208 /**
209 Remove a todo from the todolist. 209 Remove a todo from the todolist.
210 */ 210 */
211 virtual void deleteTodo( Todo * ) = 0; 211 virtual void deleteTodo( Todo * ) = 0;
212 virtual void deleteJournal( Journal * ) = 0; 212 virtual void deleteJournal( Journal * ) = 0;
213 /** 213 /**
214 Return filterd list of todos. 214 Return filterd list of todos.
215 */ 215 */
216 virtual QPtrList<Todo> todos(); 216 virtual QPtrList<Todo> todos();
217 /** 217 /**
218 Searches todolist for an event with this unique string identifier, 218 Searches todolist for an event with this unique string identifier,
219 returns a pointer or null. 219 returns a pointer or null.
220 */ 220 */
221 virtual Todo *todo( const QString &uid ) = 0; 221 virtual Todo *todo( const QString &uid ) = 0;
222 virtual Todo *todo( QString, QString ) = 0; 222 virtual Todo *todo( QString, QString ) = 0;
223 /** 223 /**
224 Returns list of todos due on the specified date. 224 Returns list of todos due on the specified date.
225 */ 225 */
226 virtual QPtrList<Todo> todos( const QDate &date ) = 0; 226 virtual QPtrList<Todo> todos( const QDate &date ) = 0;
227 /** 227 /**
228 Return unfiltered list of todos. 228 Return unfiltered list of todos.
229 */ 229 */
230 virtual QPtrList<Todo> rawTodos() = 0; 230 virtual QPtrList<Todo> rawTodos() = 0;
231 231
232 /** 232 /**
233 Add a Journal entry to calendar. 233 Add a Journal entry to calendar.
234 234
235 @return true on success, false on error. 235 @return true on success, false on error.
236 */ 236 */
237 virtual bool addJournal( Journal * ) = 0; 237 virtual bool addJournal( Journal * ) = 0;
238 /** 238 /**
239 Return Journal for given date. 239 Return Journal for given date.
240 */ 240 */
241 virtual Journal *journal( const QDate & ) = 0; 241 virtual Journal *journal( const QDate & ) = 0;
242 /** 242 /**
243 Return Journal with given UID. 243 Return Journal with given UID.
244 */ 244 */
245 virtual Journal *journal( const QString &UID ) = 0; 245 virtual Journal *journal( const QString &UID ) = 0;
246 /** 246 /**
247 Return list of all Journal entries. 247 Return list of all Journal entries.
248 */ 248 */
249 virtual QPtrList<Journal> journals() = 0; 249 virtual QPtrList<Journal> journals() = 0;
250 250
251 /** 251 /**
252 Searches all incidence types for an incidence with this unique 252 Searches all incidence types for an incidence with this unique
253 string identifier, returns a pointer or null. 253 string identifier, returns a pointer or null.
254 */ 254 */
255 Incidence* incidence( const QString&UID ); 255 Incidence* incidence( const QString&UID );
256 256
257 /** 257 /**
258 Setup relations for an incidence. 258 Setup relations for an incidence.
259 */ 259 */
260 virtual void setupRelations( Incidence * ); 260 virtual void setupRelations( Incidence * );
261 /** 261 /**
262 Remove all relations to an incidence 262 Remove all relations to an incidence
263 */ 263 */
264 virtual void removeRelations( Incidence * ); 264 virtual void removeRelations( Incidence * );
265 265
266 /** 266 /**
267 Set calendar filter, which filters events for the events() functions. 267 Set calendar filter, which filters events for the events() functions.
268 The Filter object is owned by the caller. 268 The Filter object is owned by the caller.
269 */ 269 */
270 void setFilter( CalFilter * ); 270 void setFilter( CalFilter * );
271 /** 271 /**
272 Return calendar filter. 272 Return calendar filter.
273 */ 273 */
274 CalFilter *filter(); 274 CalFilter *filter();
275 virtual QDateTime nextAlarm( int daysTo ) = 0; 275 virtual QDateTime nextAlarm( int daysTo ) = 0;
276 virtual QString nextSummary( ) const = 0; 276 virtual QString nextSummary( ) const = 0;
277 virtual void reInitAlarmSettings() = 0; 277 virtual void reInitAlarmSettings() = 0;
278 virtual QDateTime nextAlarmEventDateTime() const = 0; 278 virtual QDateTime nextAlarmEventDateTime() const = 0;
279 virtual void checkAlarmForIncidence( Incidence *, bool ) = 0; 279 virtual void checkAlarmForIncidence( Incidence *, bool ) = 0;
280 /** 280 /**
281 Return all alarms, which ocur in the given time interval. 281 Return all alarms, which ocur in the given time interval.
282 */ 282 */
283 virtual Alarm::List alarms( const QDateTime &from, 283 virtual Alarm::List alarms( const QDateTime &from,
284 const QDateTime &to ) = 0; 284 const QDateTime &to ) = 0;
285 285
286 class Observer { 286 class Observer {
287 public: 287 public:
288 virtual void calendarModified( bool, Calendar * ) = 0; 288 virtual void calendarModified( bool, Calendar * ) = 0;
289 }; 289 };
290 290
291 void registerObserver( Observer * ); 291 void registerObserver( Observer * );
292 292
293 void setModified( bool ); 293 void setModified( bool );
294 294
295 /** 295 /**
296 Set product id returned by loadedProductId(). This function is only 296 Set product id returned by loadedProductId(). This function is only
297 useful for the calendar loading code. 297 useful for the calendar loading code.
298 */ 298 */
299 void setLoadedProductId( const QString & ); 299 void setLoadedProductId( const QString & );
300 /** 300 /**
301 Return product id taken from file that has been loaded. Returns 301 Return product id taken from file that has been loaded. Returns
302 QString::null, if no calendar has been loaded. 302 QString::null, if no calendar has been loaded.
303 */ 303 */
304 QString loadedProductId(); 304 QString loadedProductId();
305 305 void setDefaultCalendar( int );
306 int defaultCalendar();
307 virtual void setCalendarEnabled( int id, bool enable ) = 0;
308 virtual void setAlarmEnabled( int id, bool enable ) = 0;
309 virtual void setDefaultCalendarEnabledOnly() = 0;
306 signals: 310 signals:
307 void calendarChanged(); 311 void calendarChanged();
308 void calendarSaved(); 312 void calendarSaved();
309 void calendarLoaded(); 313 void calendarLoaded();
310 void addAlarm(const QDateTime &qdt, const QString &noti ); 314 void addAlarm(const QDateTime &qdt, const QString &noti );
311 void removeAlarm(const QDateTime &qdt, const QString &noti ); 315 void removeAlarm(const QDateTime &qdt, const QString &noti );
312 316
313 protected: 317 protected:
314 /** 318 /**
315 Get unfiltered events, which occur on the given date. 319 Get unfiltered events, which occur on the given date.
316 */ 320 */
317 virtual QPtrList<Event> rawEventsForDate( const QDateTime &qdt ) = 0; 321 virtual QPtrList<Event> rawEventsForDate( const QDateTime &qdt ) = 0;
318 /** 322 /**
319 Get unfiltered events, which occur on the given date. 323 Get unfiltered events, which occur on the given date.
320 */ 324 */
321 virtual QPtrList<Event> rawEventsForDate( const QDate &date, 325 virtual QPtrList<Event> rawEventsForDate( const QDate &date,
322 bool sorted = false ) = 0; 326 bool sorted = false ) = 0;
323 /** 327 /**
324 Get events in a range of dates. If inclusive is set to true, only events 328 Get events in a range of dates. If inclusive is set to true, only events
325 are returned, which are completely included in the range. 329 are returned, which are completely included in the range.
326 */ 330 */
327 virtual QPtrList<Event> rawEvents( const QDate &start, const QDate &end, 331 virtual QPtrList<Event> rawEvents( const QDate &start, const QDate &end,
328 bool inclusive = false ) = 0; 332 bool inclusive = false ) = 0;
333
329 Incidence *mNextAlarmIncidence; 334 Incidence *mNextAlarmIncidence;
330 Incidence *mUndoIncidence; 335 Incidence *mUndoIncidence;
336 int mDefaultCalendar;
331 337
332private: 338private:
333 void init(); 339 void init();
334 340
335 QString mOwner; // who the calendar belongs to 341 QString mOwner; // who the calendar belongs to
336 QString mOwnerEmail; // email address of the owner 342 QString mOwnerEmail; // email address of the owner
337 int mTimeZone; // timezone OFFSET from GMT (MINUTES) 343 int mTimeZone; // timezone OFFSET from GMT (MINUTES)
338 bool mLocalTime; // use local time, not UTC or a time zone 344 bool mLocalTime; // use local time, not UTC or a time zone
339 345
340 CalFilter *mFilter; 346 CalFilter *mFilter;
341 CalFilter *mDefaultFilter; 347 CalFilter *mDefaultFilter;
348
342 349
343 QString mTimeZoneId; 350 QString mTimeZoneId;
344 351
345 Observer *mObserver; 352 Observer *mObserver;
346 bool mNewObserver; 353 bool mNewObserver;
347 354
348 bool mModified; 355 bool mModified;
349 356
350 QString mLoadedProductId; 357 QString mLoadedProductId;
351 358
352 // This list is used to put together related todos 359 // This list is used to put together related todos
353 QDict<Incidence> mOrphans; 360 QDict<Incidence> mOrphans;
354 QDict<Incidence> mOrphanUids; 361 QDict<Incidence> mOrphanUids;
355}; 362};
356 363
357} 364}
358 365
359#endif 366#endif