• Skip to content
  • Skip to link menu
  • KDE API Reference
  • kdepimlibs-4.8.5 API Reference
  • KDE Home
  • Contact Us
 

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 &notebook );
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 &notebook ) const;
00517 
00527     bool addNotebook( const QString &notebook, bool isVisible );
00528 
00538     bool updateNotebook( const QString &notebook, bool isVisible );
00539 
00548     bool deleteNotebook( const QString &notebook );
00549 
00556     bool setDefaultNotebook( const QString &notebook );
00557 
00563     QString defaultNotebook() const;
00564 
00570     bool isVisible( const Incidence::Ptr &incidence ) const;
00571 
00578     virtual Incidence::List incidences( const QString &notebook ) 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 &timespec = 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 &timespec = 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 Aug 27 2012 22:07:48 by doxygen 1.7.5 written by Dimitri van Heesch, © 1997-2006

KDE's Doxygen guidelines are available online.

KCalCore Library

Skip menu "KCalCore Library"
  • Main Page
  • Namespace List
  • Namespace Members
  • Alphabetical List
  • Class List
  • Class Hierarchy
  • Class Members
  • File List
  • File Members
  • Related Pages

kdepimlibs-4.8.5 API Reference

Skip menu "kdepimlibs-4.8.5 API Reference"
  • akonadi
  •   contact
  •   kmime
  • kabc
  • kalarmcal
  • kblog
  • kcal
  • kcalcore
  • kcalutils
  • kholidays
  • kimap
  • kioslave
  •   imap4
  •   mbox
  •   nntp
  • kldap
  • kmbox
  • kmime
  • kontactinterface
  • kpimidentities
  • kpimtextedit
  •   richtextbuilders
  • kpimutils
  • kresources
  • ktnef
  • kxmlrpcclient
  • mailtransport
  • microblog
  • qgpgme
  • syndication
  •   atom
  •   rdf
  •   rss2
Report problems with this website to our bug tracking system.
Contact the specific authors with questions and comments about the page contents.

KDE® and the K Desktop Environment® logo are registered trademarks of KDE e.V. | Legal