• Skip to content
  • Skip to link menu
KDE 4.7 API Reference
  • KDE API Reference
  • KDE-PIM Libraries
  • KDE Home
  • 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_DEPRECATED 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 );
00539 
00553     static Event::List sortEventsForDate( Event::List *eventList,
00554                                           const QDate &date,
00555                                           const KDateTime::Spec &timeSpec,
00556                                           EventSortField sortField,
00557                                           SortDirection sortDirection );
00558 
00567     virtual Event::List events(
00568       EventSortField sortField = EventSortUnsorted,
00569       SortDirection sortDirection = SortDirectionAscending );
00570 
00578     Event::List events( const KDateTime &dt );
00579 
00593     Event::List events( const QDate &start, const QDate &end,
00594                         const KDateTime::Spec &timeSpec = KDateTime::Spec(),
00595                         bool inclusive = false );
00596 
00610     Event::List events(
00611       const QDate &date,
00612       const KDateTime::Spec &timeSpec = KDateTime::Spec(),
00613       EventSortField sortField = EventSortUnsorted,
00614       SortDirection sortDirection = SortDirectionAscending );
00615 
00624     virtual Event::List rawEvents(
00625       EventSortField sortField = EventSortUnsorted,
00626       SortDirection sortDirection = SortDirectionAscending ) = 0;
00627 
00637     virtual Event::List rawEventsForDate( const KDateTime &dt ) = 0;
00638 
00652     virtual Event::List rawEvents( const QDate &start, const QDate &end,
00653                                    const KDateTime::Spec &timeSpec = KDateTime::Spec(),
00654                                    bool inclusive = false ) = 0;
00655 
00669     virtual Event::List rawEventsForDate(
00670       const QDate &date, const KDateTime::Spec &timeSpec = KDateTime::Spec(),
00671       EventSortField sortField = EventSortUnsorted,
00672       SortDirection sortDirection = SortDirectionAscending ) = 0;
00673 
00682     virtual Event *event( const QString &uid ) = 0;
00683 
00684   // Todo Specific Methods //
00685 
00695     virtual bool addTodo( Todo *todo ) = 0;
00696 
00706     virtual bool deleteTodo( Todo *todo ) = 0;
00707 
00712     virtual void deleteAllTodos() = 0;
00713 
00723     static Todo::List sortTodos( Todo::List *todoList,
00724                                  TodoSortField sortField,
00725                                  SortDirection sortDirection );
00726 
00735     virtual Todo::List todos(
00736       TodoSortField sortField = TodoSortUnsorted,
00737       SortDirection sortDirection = SortDirectionAscending );
00738 
00746     virtual Todo::List todos( const QDate &date );
00747 
00756     virtual Todo::List rawTodos(
00757       TodoSortField sortField = TodoSortUnsorted,
00758       SortDirection sortDirection = SortDirectionAscending ) = 0;
00759 
00767     virtual Todo::List rawTodosForDate( const QDate &date ) = 0;
00768 
00777     virtual Todo *todo( const QString &uid ) = 0;
00778 
00779   // Journal Specific Methods //
00780 
00790     virtual bool addJournal( Journal *journal ) = 0;
00791 
00801     virtual bool deleteJournal( Journal *journal ) = 0;
00802 
00807     virtual void deleteAllJournals() = 0;
00808 
00818     static Journal::List sortJournals( Journal::List *journalList,
00819                                        JournalSortField sortField,
00820                                        SortDirection sortDirection );
00829     virtual Journal::List journals(
00830       JournalSortField sortField = JournalSortUnsorted,
00831       SortDirection sortDirection = SortDirectionAscending );
00832 
00840     virtual Journal::List journals( const QDate &date );
00841 
00850     virtual Journal::List rawJournals(
00851       JournalSortField sortField = JournalSortUnsorted,
00852       SortDirection sortDirection = SortDirectionAscending ) = 0;
00853 
00861     virtual Journal::List rawJournalsForDate( const QDate &date ) = 0;
00862 
00871     virtual Journal *journal( const QString &uid ) = 0;
00872 
00885     void beginBatchAdding();
00886 
00895     void endBatchAdding();
00896 
00897   // Relations Specific Methods //
00898 
00905     virtual void setupRelations( Incidence *incidence );
00906 
00913     virtual void removeRelations( Incidence *incidence );
00914 
00921     bool isAncestorOf( Incidence *ancestor, Incidence *incidence );
00922 
00923   // Filter Specific Methods //
00924 
00934     void setFilter( CalFilter *filter );
00935 
00944     CalFilter *filter();
00945 
00946   // Alarm Specific Methods //
00947 
00956     virtual Alarm::List alarms( const KDateTime &from,
00957                                 const KDateTime &to ) = 0;
00958 
00959   // Observer Specific Methods //
00960 
00966     class KCAL_EXPORT_DEPRECATED CalendarObserver //krazy:exclude=dpointer
00967     {
00968       public:
00972         virtual ~CalendarObserver() {}
00973 
00981         virtual void calendarModified( bool modified, Calendar *calendar );
00982 
00988         virtual void calendarIncidenceAdded( Incidence *incidence );
00989 
00995         virtual void calendarIncidenceChanged( Incidence *incidence );
00996 
01002         virtual void calendarIncidenceDeleted( Incidence *incidence );
01003     };
01004 
01013     void registerObserver( CalendarObserver *observer );
01014 
01023     void unregisterObserver( CalendarObserver *observer );
01024 
01025     using QObject::event;   // prevent warning about hidden virtual method
01026 
01027   Q_SIGNALS:
01031     void calendarChanged();
01032 
01036     void calendarSaved();
01037 
01041     void calendarLoaded();
01042 
01047     void batchAddingBegins();
01048 
01053     void batchAddingEnds();
01054 
01055   protected:
01061     void incidenceUpdated( IncidenceBase *incidenceBase );
01062 
01069     virtual void doSetTimeSpec( const KDateTime::Spec &timeSpec );
01070 
01076     void notifyIncidenceAdded( Incidence *incidence );
01077 
01083     void notifyIncidenceChanged( Incidence *incidence );
01084 
01090     void notifyIncidenceDeleted( Incidence *incidence );
01091 
01096     virtual void customPropertyUpdated();
01097 
01104     void setObserversEnabled( bool enabled );
01105 
01115     void appendAlarms( Alarm::List &alarms, Incidence *incidence,
01116                        const KDateTime &from, const KDateTime &to );
01117 
01127     void appendRecurringAlarms( Alarm::List &alarms, Incidence *incidence,
01128                                 const KDateTime &from, const KDateTime &to );
01129 
01130   private:
01131     //@cond PRIVATE
01132     class Private;
01133     Private *const d;
01134     //@endcond
01135 
01136     Q_DISABLE_COPY( Calendar )
01137 };
01138 
01139 }
01140 
01141 #endif

KCal Library

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

KDE-PIM Libraries

Skip menu "KDE-PIM Libraries"
  • akonadi
  •   contact
  •   kmime
  • kabc
  • 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
Generated for KDE-PIM Libraries by doxygen 1.7.5
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