calendar.h
00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022 #ifndef KCAL_CALENDAR_H
00023 #define KCAL_CALENDAR_H
00024
00025 #include <qobject.h>
00026 #include <qstring.h>
00027 #include <qdatetime.h>
00028 #include <qptrlist.h>
00029 #include <qdict.h>
00030
00031 #include "customproperties.h"
00032 #include "event.h"
00033 #include "todo.h"
00034 #include "journal.h"
00035 #include "kcalversion.h"
00036
00037 #define _TIME_ZONE "-0500"
00038
00039 class KConfig;
00040
00041 namespace KCal {
00042
00043 class CalFilter;
00044
00061 class Calendar : public QObject, public CustomProperties,
00062 public IncidenceBase::Observer
00063 {
00064 Q_OBJECT
00065 public:
00066 Calendar();
00067 Calendar(const QString &timeZoneId);
00068 virtual ~Calendar();
00069
00073 virtual void close() = 0;
00074
00078 virtual void save() = 0;
00079
00080 virtual bool isSaving() { return false; }
00081
00085 const QString &getOwner() const;
00089 void setOwner( const QString &os );
00093 const QString &getEmail();
00097 void setEmail( const QString & );
00098
00103 void setTimeZoneId( const QString & );
00107 QString timeZoneId() const;
00111 void setLocalTime();
00115 bool isLocalTime() const;
00116
00122 virtual bool addIncidence( Incidence * );
00128 virtual bool deleteIncidence( Incidence * );
00132 virtual Incidence::List incidences();
00133 virtual Incidence::List incidences( const QDate &qdt );
00134
00138 virtual Incidence::List rawIncidences();
00139
00143 QStringList incidenceCategories();
00144
00151 virtual bool addEvent( Event *anEvent ) = 0;
00155 virtual void deleteEvent( Event * ) = 0;
00159 virtual Event *event( const QString &UniqueStr ) = 0;
00165 Event::List events( const QDate &date, bool sorted = false );
00170 Event::List events( const QDateTime &qdt );
00176 Event::List events( const QDate &start, const QDate &end,
00177 bool inclusive = false);
00181 virtual Event::List events();
00185 virtual Event::List rawEvents() = 0;
00186
00192 virtual bool addTodo( Todo *todo ) = 0;
00196 virtual void deleteTodo( Todo * ) = 0;
00200 virtual Todo::List todos();
00205 virtual Todo *todo( const QString &uid ) = 0;
00209 virtual Todo::List todos( const QDate &date );
00213 virtual Todo::List rawTodos() = 0;
00217 virtual Todo::List rawTodosForDate( const QDate &date ) = 0;
00218
00224 virtual bool addJournal( Journal * ) = 0;
00228 virtual void deleteJournal( Journal * ) = 0;
00232 virtual Journal *journal( const QDate & ) = 0;
00236 virtual Journal *journal( const QString &UID ) = 0;
00240 virtual Journal::List journals() = 0;
00241
00242
00247 Incidence *incidence( const QString &UID );
00248
00252 virtual void setupRelations( Incidence * );
00256 virtual void removeRelations( Incidence * );
00257
00262 void setFilter( CalFilter * );
00266 CalFilter *filter();
00267
00271 virtual Alarm::List alarms( const QDateTime &from,
00272 const QDateTime &to ) = 0;
00273
00274 class Observer {
00275 public:
00276 virtual void calendarModified( bool, Calendar * ) {};
00277
00278 virtual void calendarIncidenceAdded( Incidence * ) {}
00279 virtual void calendarIncidenceChanged( Incidence * ) {}
00280 virtual void calendarIncidenceDeleted( Incidence * ) {}
00281 };
00282
00283 void registerObserver( Observer * );
00284 void unregisterObserver( Observer * );
00285
00286 void setModified( bool );
00287
00292 void setLoadedProductId( const QString & );
00297 QString loadedProductId();
00298
00302 static Incidence::List mergeIncidenceList( const Event::List &,
00303 const Todo::List &,
00304 const Journal::List & );
00305
00306 virtual bool beginChange( Incidence * );
00307 virtual bool endChange( Incidence * );
00308
00316 Incidence *dissociateOccurrence( Incidence *incidence, QDate date,
00317 bool single = true );
00318
00319 signals:
00320 void calendarChanged();
00321 void calendarSaved();
00322 void calendarLoaded();
00323
00324 public:
00328 virtual Event::List rawEventsForDate( const QDateTime &qdt ) = 0;
00332 virtual Event::List rawEventsForDate( const QDate &date,
00333 bool sorted = false ) = 0;
00338 virtual Event::List rawEvents( const QDate &start, const QDate &end,
00339 bool inclusive = false ) = 0;
00340 protected:
00344 virtual void doSetTimeZoneId( const QString & ) {}
00345
00346 void notifyIncidenceAdded( Incidence * );
00347 void notifyIncidenceChanged( Incidence * );
00348 void notifyIncidenceDeleted( Incidence * );
00349
00350 void setObserversEnabled( bool enabled );
00351
00352 private:
00353 void init();
00354
00355 QString mOwner;
00356 QString mOwnerEmail;
00357 int mTimeZone;
00358 bool mLocalTime;
00359
00360 CalFilter *mFilter;
00361 CalFilter *mDefaultFilter;
00362
00363 QString mTimeZoneId;
00364
00365 QPtrList<Observer> mObservers;
00366 bool mNewObserver;
00367 bool mObserversEnabled;
00368
00369 bool mModified;
00370
00371 QString mLoadedProductId;
00372
00373
00374 QDict<Incidence> mOrphans;
00375 QDict<Incidence> mOrphanUids;
00376
00377 class Private;
00378 Private *d;
00379 };
00380
00381 }
00382
00383 #endif
This file is part of the documentation for libkcal Library Version 3.3.2.