• Skip to content
  • Skip to link menu
KDE 4.3 API Reference
  • KDE API Reference
  • KDE-PIM Libraries
  • Sitemap
  • Contact Us
 

KCal Library

calendar.h

Go to the documentation of this file.
00001 /*
00002   This file is part of the kcal 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 */
00035 #ifndef KCAL_CALENDAR_H
00036 #define KCAL_CALENDAR_H
00037 
00038 #include <QtCore/QObject>
00039 #include <QtCore/QString>
00040 #include <QtCore/QList>
00041 #include <QtCore/QMultiHash>
00042 
00043 #include <kdatetime.h>
00044 
00045 #include "customproperties.h"
00046 #include "event.h"
00047 #include "todo.h"
00048 #include "journal.h"
00049 #include "kcalversion.h"
00050 
00051 namespace KCal {
00052 
00053 class ICalTimeZone;
00054 class ICalTimeZones;
00055 class CalFilter;
00056 class Person;
00057 
00061 enum SortDirection {
00062   SortDirectionAscending,  
00063   SortDirectionDescending  
00064 };
00065 
00069 enum EventSortField {
00070   EventSortUnsorted,       
00071   EventSortStartDate,      
00072   EventSortEndDate,        
00073   EventSortSummary         
00074 };
00075 
00079 enum TodoSortField {
00080   TodoSortUnsorted,        
00081   TodoSortStartDate,       
00082   TodoSortDueDate,         
00083   TodoSortPriority,        
00084   TodoSortPercentComplete, 
00085   TodoSortSummary          
00086 };
00087 
00091 enum JournalSortField {
00092   JournalSortUnsorted,     
00093   JournalSortDate,         
00094   JournalSortSummary       
00095 };
00096 
00119 class KCAL_EXPORT Calendar : public QObject, public CustomProperties,
00120                              public IncidenceBase::IncidenceObserver
00121 {
00122   Q_OBJECT
00123 
00124   public:
00125 
00136     explicit Calendar( const KDateTime::Spec &timeSpec );
00137 
00151     explicit Calendar( const QString &timeZoneId );
00152 
00156     virtual ~Calendar();
00157 
00165     void setProductId( const QString &id );
00166 
00172     QString productId() const;
00173 
00181     void setOwner( const Person &owner );
00182 
00190     Person owner() const;
00191 
00200     void setTimeSpec( const KDateTime::Spec &timeSpec );
00201 
00208     KDateTime::Spec timeSpec() const;
00209 
00223     void setTimeZoneId( const QString &timeZoneId );
00224 
00232     QString timeZoneId() const;
00233 
00248     void setViewTimeSpec( const KDateTime::Spec &timeSpec ) const;
00249 
00268     void setViewTimeZoneId( const QString &timeZoneId ) const;
00269 
00276     KDateTime::Spec viewTimeSpec() const;
00277 
00284     QString viewTimeZoneId() const;
00285 
00302     void shiftTimes( const KDateTime::Spec &oldSpec, const KDateTime::Spec &newSpec );
00303 
00311     ICalTimeZones *timeZones() const;
00312 
00319     void setTimeZones( const ICalTimeZones &zones );
00320 
00329     void setModified( bool modified );
00330 
00338     bool isModified() const;
00339 
00343     virtual void close() = 0;
00344 
00350     virtual bool save() = 0;
00351 
00358     virtual bool reload() = 0;
00359 
00365     virtual bool isSaving();
00366 
00372     QStringList categories();
00373 
00374   // Incidence Specific Methods //
00375 
00385     virtual bool addIncidence( Incidence *incidence );
00386 
00396     virtual bool deleteIncidence( Incidence *incidence );
00397 
00403     virtual Incidence::List incidences();
00404 
00412     virtual Incidence::List incidences( const QDate &date );
00413 
00419     virtual Incidence::List rawIncidences();
00420 
00429     Incidence *incidence( const QString &uid );
00430 
00439     Incidence *incidenceFromSchedulingID( const QString &sid );
00440 
00447     Incidence::List incidencesFromSchedulingID( const QString &sid );
00448 
00458     static Incidence::List mergeIncidenceList( const Event::List &events,
00459                                                const Todo::List &todos,
00460                                                const Journal::List &journals );
00461 
00467     virtual bool beginChange( Incidence *incidence );
00468 
00474     virtual bool endChange( Incidence *incidence );
00475 
00493     Incidence *dissociateOccurrence( Incidence *incidence, const QDate &date,
00494                                      const KDateTime::Spec &spec,
00495                                      bool single = true );
00496 
00497   // Event Specific Methods //
00498 
00508     virtual bool addEvent( Event *event ) = 0;
00509 
00519     virtual bool deleteEvent( Event *event ) = 0;
00520 
00525     virtual void deleteAllEvents() = 0;
00526 
00536     static Event::List sortEvents( Event::List *eventList,
00537                                    EventSortField sortField,
00538                                    SortDirection sortDirection );
00547     virtual Event::List events(
00548       EventSortField sortField = EventSortUnsorted,
00549       SortDirection sortDirection = SortDirectionAscending );
00550 
00558     Event::List events( const KDateTime &dt );
00559 
00573     Event::List events( const QDate &start, const QDate &end,
00574                         const KDateTime::Spec &timeSpec = KDateTime::Spec(),
00575                         bool inclusive = false );
00576 
00590     Event::List events(
00591       const QDate &date,
00592       const KDateTime::Spec &timeSpec = KDateTime::Spec(),
00593       EventSortField sortField = EventSortUnsorted,
00594       SortDirection sortDirection = SortDirectionAscending );
00595 
00604     virtual Event::List rawEvents(
00605       EventSortField sortField = EventSortUnsorted,
00606       SortDirection sortDirection = SortDirectionAscending ) = 0;
00607 
00617     virtual Event::List rawEventsForDate( const KDateTime &dt ) = 0;
00618 
00632     virtual Event::List rawEvents( const QDate &start, const QDate &end,
00633                                    const KDateTime::Spec &timeSpec = KDateTime::Spec(),
00634                                    bool inclusive = false ) = 0;
00635 
00649     virtual Event::List rawEventsForDate(
00650       const QDate &date, const KDateTime::Spec &timeSpec = KDateTime::Spec(),
00651       EventSortField sortField = EventSortUnsorted,
00652       SortDirection sortDirection = SortDirectionAscending ) = 0;
00653 
00662     virtual Event *event( const QString &uid ) = 0;
00663 
00664   // Todo Specific Methods //
00665 
00675     virtual bool addTodo( Todo *todo ) = 0;
00676 
00686     virtual bool deleteTodo( Todo *todo ) = 0;
00687 
00692     virtual void deleteAllTodos() = 0;
00693 
00703     static Todo::List sortTodos( Todo::List *todoList,
00704                                  TodoSortField sortField,
00705                                  SortDirection sortDirection );
00706 
00715     virtual Todo::List todos(
00716       TodoSortField sortField = TodoSortUnsorted,
00717       SortDirection sortDirection = SortDirectionAscending );
00718 
00726     virtual Todo::List todos( const QDate &date );
00727 
00736     virtual Todo::List rawTodos(
00737       TodoSortField sortField = TodoSortUnsorted,
00738       SortDirection sortDirection = SortDirectionAscending ) = 0;
00739 
00747     virtual Todo::List rawTodosForDate( const QDate &date ) = 0;
00748 
00757     virtual Todo *todo( const QString &uid ) = 0;
00758 
00759   // Journal Specific Methods //
00760 
00770     virtual bool addJournal( Journal *journal ) = 0;
00771 
00781     virtual bool deleteJournal( Journal *journal ) = 0;
00782 
00787     virtual void deleteAllJournals() = 0;
00788 
00798     static Journal::List sortJournals( Journal::List *journalList,
00799                                        JournalSortField sortField,
00800                                        SortDirection sortDirection );
00809     virtual Journal::List journals(
00810       JournalSortField sortField = JournalSortUnsorted,
00811       SortDirection sortDirection = SortDirectionAscending );
00812 
00820     virtual Journal::List journals( const QDate &date );
00821 
00830     virtual Journal::List rawJournals(
00831       JournalSortField sortField = JournalSortUnsorted,
00832       SortDirection sortDirection = SortDirectionAscending ) = 0;
00833 
00841     virtual Journal::List rawJournalsForDate( const QDate &date ) = 0;
00842 
00851     virtual Journal *journal( const QString &uid ) = 0;
00852 
00853   // Relations Specific Methods //
00854 
00861     virtual void setupRelations( Incidence *incidence );
00862 
00869     virtual void removeRelations( Incidence *incidence );
00870 
00871   // Filter Specific Methods //
00872 
00881     void setFilter( CalFilter *filter );
00882 
00891     CalFilter *filter();
00892 
00893   // Alarm Specific Methods //
00894 
00903     virtual Alarm::List alarms( const KDateTime &from,
00904                                 const KDateTime &to ) = 0;
00905 
00906   // Observer Specific Methods //
00907 
00913     class KCAL_EXPORT CalendarObserver //krazy:exclude=dpointer
00914     {
00915       public:
00919         virtual ~CalendarObserver() {}
00920 
00928         virtual void calendarModified( bool modified, Calendar *calendar );
00929 
00935         virtual void calendarIncidenceAdded( Incidence *incidence );
00936 
00942         virtual void calendarIncidenceChanged( Incidence *incidence );
00943 
00949         virtual void calendarIncidenceDeleted( Incidence *incidence );
00950     };
00951 
00960     void registerObserver( CalendarObserver *observer );
00961 
00970     void unregisterObserver( CalendarObserver *observer );
00971 
00972     using QObject::event;   // prevent warning about hidden virtual method
00973 
00974   Q_SIGNALS:
00978     void calendarChanged();
00979 
00983     void calendarSaved();
00984 
00988     void calendarLoaded();
00989 
00990   protected:
00996     void incidenceUpdated( IncidenceBase *incidenceBase );
00997 
01004     virtual void doSetTimeSpec( const KDateTime::Spec &timeSpec );
01005 
01011     void notifyIncidenceAdded( Incidence *incidence );
01012 
01018     void notifyIncidenceChanged( Incidence *incidence );
01019 
01025     void notifyIncidenceDeleted( Incidence *incidence );
01026 
01031     virtual void customPropertyUpdated();
01032 
01039     void setObserversEnabled( bool enabled );
01040 
01050     void appendAlarms( Alarm::List &alarms, Incidence *incidence,
01051                        const KDateTime &from, const KDateTime &to );
01052 
01062     void appendRecurringAlarms( Alarm::List &alarms, Incidence *incidence,
01063                                 const KDateTime &from, const KDateTime &to );
01064 
01065   private:
01066     //@cond PRIVATE
01067     class Private;
01068     Private *const d;
01069     //@endcond
01070 
01071     Q_DISABLE_COPY( Calendar )
01072 };
01073 
01074 }
01075 
01076 #endif

KCal Library

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

KDE-PIM Libraries

Skip menu "KDE-PIM Libraries"
  • akonadi
  • kabc
  • kblog
  • kcal
  • kholidays
  • kimap
  • kioslave
  •   imap4
  •   mbox
  • kldap
  • kmime
  • kpimidentities
  • kpimtextedit
  •   richtextbuilders
  • kpimutils
  • kresources
  • ktnef
  • kxmlrpcclient
  • mailtransport
  • microblog
  • qgpgme
  • syndication
  •   atom
  •   rdf
  •   rss2
Generated for KDE-PIM Libraries by doxygen 1.5.9
This website is maintained by Adriaan de Groot and Allen Winter.
KDE® and the K Desktop Environment® logo are registered trademarks of KDE e.V. | Legal