KCalCore Library
calendar.h
Go to the documentation of this file.
00001 /* 00002 This file is part of the kcalcore library. 00003 00004 Copyright (c) 1998 Preston Brown <pbrown@kde.org> 00005 Copyright (c) 2001,2003,2004 Cornelius Schumacher <schumacher@kde.org> 00006 Copyright (C) 2003-2004 Reinhold Kainhofer <reinhold@kainhofer.com> 00007 Copyright (c) 2006 David Jarvie <software@astrojar.org.uk> 00008 00009 This library is free software; you can redistribute it and/or 00010 modify it under the terms of the GNU Library General Public 00011 License as published by the Free Software Foundation; either 00012 version 2 of the License, or (at your option) any later version. 00013 00014 This library is distributed in the hope that it will be useful, 00015 but WITHOUT ANY WARRANTY; without even the implied warranty of 00016 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 00017 Library General Public License for more details. 00018 00019 You should have received a copy of the GNU Library General Public License 00020 along with this library; see the file COPYING.LIB. If not, write to 00021 the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, 00022 Boston, MA 02110-1301, USA. 00023 */ 00048 #ifndef KCALCORE_CALENDAR_H 00049 #define KCALCORE_CALENDAR_H 00050 00051 #include "kcalcore_export.h" 00052 #include "event.h" 00053 #include "customproperties.h" 00054 #include "incidence.h" 00055 #include "journal.h" 00056 #include "todo.h" 00057 00058 #include <QtCore/QObject> 00059 00060 namespace KCalCore { 00061 00062 class CalFilter; 00063 class Person; 00064 class ICalTimeZones; 00065 00069 enum SortDirection { 00070 SortDirectionAscending, 00071 SortDirectionDescending 00072 }; 00073 00077 enum EventSortField { 00078 EventSortUnsorted, 00079 EventSortStartDate, 00080 EventSortEndDate, 00081 EventSortSummary 00082 }; 00083 00087 enum TodoSortField { 00088 TodoSortUnsorted, 00089 TodoSortStartDate, 00090 TodoSortDueDate, 00091 TodoSortPriority, 00092 TodoSortPercentComplete, 00093 TodoSortSummary, 00094 TodoSortCreated 00095 }; 00096 00100 enum JournalSortField { 00101 JournalSortUnsorted, 00102 JournalSortDate, 00103 JournalSortSummary 00104 }; 00105 00128 class KCALCORE_EXPORT Calendar : public QObject, public CustomProperties, 00129 public IncidenceBase::IncidenceObserver 00130 { 00131 Q_OBJECT 00132 00133 public: 00134 00138 typedef QSharedPointer<Calendar> Ptr; 00139 00150 explicit Calendar( const KDateTime::Spec &timeSpec ); 00151 00165 explicit Calendar( const QString &timeZoneId ); 00166 00170 virtual ~Calendar(); 00171 00179 void setProductId( const QString &id ); 00180 00186 QString productId() const; 00187 00195 void setOwner( const Person::Ptr &owner ); 00196 00204 Person::Ptr owner() const; 00205 00214 void setTimeSpec( const KDateTime::Spec &timeSpec ); 00215 00222 KDateTime::Spec timeSpec() const; 00223 00237 void setTimeZoneId( const QString &timeZoneId ); 00238 00246 QString timeZoneId() const; 00247 00262 void setViewTimeSpec( const KDateTime::Spec &timeSpec ) const; 00263 00282 void setViewTimeZoneId( const QString &timeZoneId ) const; 00283 00290 KDateTime::Spec viewTimeSpec() const; 00291 00298 QString viewTimeZoneId() const; 00299 00316 void shiftTimes( const KDateTime::Spec &oldSpec, const KDateTime::Spec &newSpec ); 00317 00325 ICalTimeZones *timeZones() const; 00326 00333 void setTimeZones( ICalTimeZones *zones ); 00334 00343 void setModified( bool modified ); 00344 00352 bool isModified() const; 00353 00357 virtual void close() = 0; 00358 00365 virtual bool save(); 00366 00374 virtual bool reload(); 00375 00381 virtual bool isSaving() const; 00382 00388 QStringList categories() const; 00389 00390 // Incidence Specific Methods // 00391 00398 virtual void startBatchAdding(); 00399 00405 virtual void endBatchAdding(); 00406 00410 bool batchAdding() const; 00411 00421 virtual bool addIncidence( const Incidence::Ptr &incidence ); 00422 00432 virtual bool deleteIncidence( const Incidence::Ptr &incidence ); 00433 00439 virtual Incidence::List incidences() const; 00440 00448 virtual Incidence::List incidences( const QDate &date ) const; 00449 00455 virtual Incidence::List rawIncidences() const; 00456 00464 virtual Incidence::List instances( const Incidence::Ptr &incidence ) const; 00465 00466 // Notebook Specific Methods // 00467 00472 virtual void clearNotebookAssociations(); 00473 00482 virtual bool setNotebook( const Incidence::Ptr &incidence, const QString ¬ebook ); 00483 00491 virtual QString notebook( const Incidence::Ptr &incidence ) const; 00492 00500 virtual QString notebook( const QString &uid ) const; 00501 00507 virtual QStringList notebooks() const; 00508 00516 bool hasValidNotebook( const QString ¬ebook ) const; 00517 00527 bool addNotebook( const QString ¬ebook, bool isVisible ); 00528 00538 bool updateNotebook( const QString ¬ebook, bool isVisible ); 00539 00548 bool deleteNotebook( const QString ¬ebook ); 00549 00556 bool setDefaultNotebook( const QString ¬ebook ); 00557 00563 QString defaultNotebook() const; 00564 00570 bool isVisible( const Incidence::Ptr &incidence ) const; 00571 00578 virtual Incidence::List incidences( const QString ¬ebook ) const; 00579 00586 virtual Incidence::List duplicates( const Incidence::Ptr &incidence ); 00587 00597 Incidence::Ptr incidence( const QString &uid, 00598 const KDateTime &recurrenceId = KDateTime() ) const; 00599 00609 Incidence::Ptr deleted( const QString &uid, const KDateTime &recurrenceId = KDateTime() ) const; 00610 00617 virtual bool deleteIncidenceInstances( const Incidence::Ptr &incidence ) = 0; 00618 00627 virtual Incidence::Ptr incidenceFromSchedulingID( const QString &sid ) const; 00628 00635 virtual Incidence::List incidencesFromSchedulingID( const QString &sid ) const; 00636 00646 static Incidence::List mergeIncidenceList( const Event::List &events, 00647 const Todo::List &todos, 00648 const Journal::List &journals ); 00649 00654 virtual bool beginChange( const Incidence::Ptr &incidence ); 00655 00660 virtual bool endChange( const Incidence::Ptr &incidence ); 00661 00679 Incidence::Ptr dissociateOccurrence( const Incidence::Ptr &incidence, const QDate &date, 00680 const KDateTime::Spec &spec, 00681 bool single = true ); 00682 00683 // Event Specific Methods // 00684 00694 virtual bool addEvent( const Event::Ptr &event ) = 0; 00695 00705 virtual bool deleteEvent( const Event::Ptr &event ) = 0; 00706 00713 virtual bool deleteEventInstances( const Event::Ptr &event ) = 0; 00714 00719 virtual void deleteAllEvents() = 0; 00720 00730 static Event::List sortEvents( const Event::List &eventList, 00731 EventSortField sortField, 00732 SortDirection sortDirection ); 00741 virtual Event::List events( EventSortField sortField = EventSortUnsorted, 00742 SortDirection sortDirection = SortDirectionAscending ) const; 00743 00751 Event::List events( const KDateTime &dt ) const; 00752 00766 Event::List events( const QDate &start, const QDate &end, 00767 const KDateTime::Spec &timeSpec = KDateTime::Spec(), 00768 bool inclusive = false ) const; 00769 00783 Event::List events( const QDate &date, 00784 const KDateTime::Spec &timeSpec = KDateTime::Spec(), 00785 EventSortField sortField = EventSortUnsorted, 00786 SortDirection sortDirection = SortDirectionAscending ) const; 00787 00796 virtual Event::List rawEvents( 00797 EventSortField sortField = EventSortUnsorted, 00798 SortDirection sortDirection = SortDirectionAscending ) const = 0; 00799 00809 virtual Event::List rawEventsForDate( const KDateTime &dt ) const = 0; 00810 00824 virtual Event::List rawEvents( const QDate &start, const QDate &end, 00825 const KDateTime::Spec &timeSpec = KDateTime::Spec(), 00826 bool inclusive = false ) const = 0; 00827 00841 virtual Event::List rawEventsForDate( 00842 const QDate &date, 00843 const KDateTime::Spec &timeSpec = KDateTime::Spec(), 00844 EventSortField sortField = EventSortUnsorted, 00845 SortDirection sortDirection = SortDirectionAscending ) const = 0; 00846 00856 virtual Event::Ptr event( const QString &uid, 00857 const KDateTime &recurrenceId = KDateTime() ) const = 0; 00858 00868 virtual Event::Ptr deletedEvent( const QString &uid, 00869 const KDateTime &recurrenceId = KDateTime() ) const = 0; 00870 00879 virtual Event::List deletedEvents( 00880 EventSortField sortField = EventSortUnsorted, 00881 SortDirection sortDirection = SortDirectionAscending ) const = 0; 00882 00892 virtual Event::List eventInstances( 00893 const Incidence::Ptr &event, 00894 EventSortField sortField = EventSortUnsorted, 00895 SortDirection sortDirection = SortDirectionAscending ) const = 0; 00896 00897 // Todo Specific Methods // 00898 00908 virtual bool addTodo( const Todo::Ptr &todo ) = 0; 00909 00919 virtual bool deleteTodo( const Todo::Ptr &todo ) = 0; 00920 00926 virtual bool deleteTodoInstances( const Todo::Ptr &todo ) = 0; 00927 00932 virtual void deleteAllTodos() = 0; 00933 00943 static Todo::List sortTodos( const Todo::List &todoList, 00944 TodoSortField sortField, 00945 SortDirection sortDirection ); 00946 00955 virtual Todo::List todos( TodoSortField sortField = TodoSortUnsorted, 00956 SortDirection sortDirection = SortDirectionAscending ) const; 00957 00965 virtual Todo::List todos( const QDate &date ) const; 00966 00980 virtual Todo::List todos( const QDate &start, const QDate &end, 00981 const KDateTime::Spec ×pec = KDateTime::Spec(), 00982 bool inclusive = false ) const; 00983 00992 virtual Todo::List rawTodos( 00993 TodoSortField sortField = TodoSortUnsorted, 00994 SortDirection sortDirection = SortDirectionAscending ) const = 0; 00995 01003 virtual Todo::List rawTodosForDate( const QDate &date ) const = 0; 01004 01018 virtual Todo::List rawTodos( const QDate &start, const QDate &end, 01019 const KDateTime::Spec ×pec = KDateTime::Spec(), 01020 bool inclusive = false ) const = 0; 01021 01031 virtual Todo::Ptr todo( const QString &uid, 01032 const KDateTime &recurrenceId = KDateTime() ) const = 0; 01033 01043 virtual Todo::Ptr deletedTodo( const QString &uid, 01044 const KDateTime &recurrenceId = KDateTime() ) const = 0; 01045 01054 virtual Todo::List deletedTodos( 01055 TodoSortField sortField = TodoSortUnsorted, 01056 SortDirection sortDirection = SortDirectionAscending ) const = 0; 01057 01067 virtual Todo::List todoInstances( 01068 const Incidence::Ptr &todo, 01069 TodoSortField sortField = TodoSortUnsorted, 01070 SortDirection sortDirection = SortDirectionAscending ) const = 0; 01071 01072 // Journal Specific Methods // 01073 01083 virtual bool addJournal( const Journal::Ptr &journal ) = 0; 01084 01094 virtual bool deleteJournal( const Journal::Ptr &journal ) = 0; 01095 01102 virtual bool deleteJournalInstances( const Journal::Ptr &journal ) = 0; 01103 01108 virtual void deleteAllJournals() = 0; 01109 01119 static Journal::List sortJournals( const Journal::List &journalList, 01120 JournalSortField sortField, 01121 SortDirection sortDirection ); 01130 virtual Journal::List journals( 01131 JournalSortField sortField = JournalSortUnsorted, 01132 SortDirection sortDirection = SortDirectionAscending ) const; 01133 01141 virtual Journal::List journals( const QDate &date ) const; 01142 01151 virtual Journal::List rawJournals( 01152 JournalSortField sortField = JournalSortUnsorted, 01153 SortDirection sortDirection = SortDirectionAscending ) const = 0; 01154 01162 virtual Journal::List rawJournalsForDate( const QDate &date ) const = 0; 01163 01173 virtual Journal::Ptr journal( const QString &uid, 01174 const KDateTime &recurrenceId = KDateTime() ) const = 0; 01175 01185 virtual Journal::Ptr deletedJournal( const QString &uid, 01186 const KDateTime &recurrenceId = KDateTime() ) const = 0; 01187 01196 virtual Journal::List deletedJournals( 01197 JournalSortField sortField = JournalSortUnsorted, 01198 SortDirection sortDirection = SortDirectionAscending ) const = 0; 01199 01209 virtual Journal::List journalInstances( 01210 const Incidence::Ptr &journal, 01211 JournalSortField sortField = JournalSortUnsorted, 01212 SortDirection sortDirection = SortDirectionAscending ) const = 0; 01213 01214 // Relations Specific Methods // 01215 01220 virtual void setupRelations( const Incidence::Ptr &incidence ); 01221 01227 virtual void removeRelations( const Incidence::Ptr &incidence ); 01228 01235 bool isAncestorOf( const Incidence::Ptr &ancestor, 01236 const Incidence::Ptr &incidence ) const; 01237 01244 Incidence::List relations( const QString &uid ) const; 01245 01246 // Filter Specific Methods // 01247 01257 void setFilter( CalFilter *filter ); 01258 01267 CalFilter *filter() const; 01268 01269 // Alarm Specific Methods // 01270 01279 virtual Alarm::List alarms( const KDateTime &from, const KDateTime &to ) const = 0; 01280 01281 // Observer Specific Methods // 01282 01288 class KCALCORE_EXPORT CalendarObserver //krazy:exclude=dpointer 01289 { 01290 public: 01294 virtual ~CalendarObserver(); 01295 01303 virtual void calendarModified( bool modified, Calendar *calendar ); 01304 01309 virtual void calendarIncidenceAdded( const Incidence::Ptr &incidence ); 01310 01315 virtual void calendarIncidenceChanged( const Incidence::Ptr &incidence ); 01316 01321 virtual void calendarIncidenceDeleted( const Incidence::Ptr &incidence ); 01322 01327 virtual void calendarIncidenceAdditionCanceled( const Incidence::Ptr &incidence ); 01328 }; 01329 01338 void registerObserver( CalendarObserver *observer ); 01339 01348 void unregisterObserver( CalendarObserver *observer ); 01349 01350 using QObject::event; // prevent warning about hidden virtual method 01351 01352 protected: 01358 void incidenceUpdated( const QString &uid, const KDateTime &recurrenceId ); 01359 01365 virtual void doSetTimeSpec( const KDateTime::Spec &timeSpec ); 01366 01371 void notifyIncidenceAdded( const Incidence::Ptr &incidence ); 01372 01377 void notifyIncidenceChanged( const Incidence::Ptr &incidence ); 01378 01383 void notifyIncidenceDeleted( const Incidence::Ptr &incidence ); 01384 01389 void notifyIncidenceAdditionCanceled( const Incidence::Ptr &incidence ); 01390 01395 virtual void customPropertyUpdated(); 01396 01403 void setObserversEnabled( bool enabled ); 01404 01414 void appendAlarms( Alarm::List &alarms, const Incidence::Ptr &incidence, 01415 const KDateTime &from, const KDateTime &to ) const; 01416 01426 void appendRecurringAlarms( Alarm::List &alarms, const Incidence::Ptr &incidence, 01427 const KDateTime &from, const KDateTime &to ) const; 01428 01433 virtual void virtual_hook( int id, void *data ); 01434 01435 private: 01436 //@cond PRIVATE 01437 class Private; 01438 Private *const d; 01439 //@endcond 01440 01441 Q_DISABLE_COPY( Calendar ) 01442 }; 01443 01444 } 01445 01446 #endif
This file is part of the KDE documentation.
Documentation copyright © 1996-2012 The KDE developers.
Generated on Mon May 7 2012 23:54:00 by doxygen 1.8.0 written by Dimitri van Heesch, © 1997-2006
Documentation copyright © 1996-2012 The KDE developers.
Generated on Mon May 7 2012 23:54:00 by doxygen 1.8.0 written by Dimitri van Heesch, © 1997-2006
KDE's Doxygen guidelines are available online.