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

KCalCore Library

  • sources
  • kde-4.12
  • kdepimlibs
  • kcalcore
calendar.h
Go to the documentation of this file.
1 /*
2  This file is part of the kcalcore library.
3 
4  Copyright (c) 1998 Preston Brown <pbrown@kde.org>
5  Copyright (c) 2001,2003,2004 Cornelius Schumacher <schumacher@kde.org>
6  Copyright (C) 2003-2004 Reinhold Kainhofer <reinhold@kainhofer.com>
7  Copyright (c) 2006 David Jarvie <software@astrojar.org.uk>
8 
9  This library is free software; you can redistribute it and/or
10  modify it under the terms of the GNU Library General Public
11  License as published by the Free Software Foundation; either
12  version 2 of the License, or (at your option) any later version.
13 
14  This library is distributed in the hope that it will be useful,
15  but WITHOUT ANY WARRANTY; without even the implied warranty of
16  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
17  Library General Public License for more details.
18 
19  You should have received a copy of the GNU Library General Public License
20  along with this library; see the file COPYING.LIB. If not, write to
21  the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
22  Boston, MA 02110-1301, USA.
23 */
48 #ifndef KCALCORE_CALENDAR_H
49 #define KCALCORE_CALENDAR_H
50 
51 #include "kcalcore_export.h"
52 #include "event.h"
53 #include "customproperties.h"
54 #include "incidence.h"
55 #include "journal.h"
56 #include "todo.h"
57 
58 #include <QtCore/QObject>
59 
60 namespace KCalCore {
61 
62 class CalFilter;
63 class Person;
64 class ICalTimeZones;
65 
69 enum SortDirection {
70  SortDirectionAscending,
71  SortDirectionDescending
72 };
73 
77 enum EventSortField {
78  EventSortUnsorted,
79  EventSortStartDate,
80  EventSortEndDate,
81  EventSortSummary
82 };
83 
87 enum TodoSortField {
88  TodoSortUnsorted,
89  TodoSortStartDate,
90  TodoSortDueDate,
91  TodoSortPriority,
92  TodoSortPercentComplete,
93  TodoSortSummary,
94  TodoSortCreated
95 };
96 
100 enum JournalSortField {
101  JournalSortUnsorted,
102  JournalSortDate,
103  JournalSortSummary
104 };
105 
128 class KCALCORE_EXPORT Calendar : public QObject, public CustomProperties,
129  public IncidenceBase::IncidenceObserver
130 {
131  Q_OBJECT
132 
133 public:
134 
138  typedef QSharedPointer<Calendar> Ptr;
139 
150  explicit Calendar(const KDateTime::Spec &timeSpec);
151 
165  explicit Calendar(const QString &timeZoneId);
166 
170  virtual ~Calendar();
171 
179  void setProductId(const QString &id);
180 
186  QString productId() const;
187 
195  void setOwner(const Person::Ptr &owner);
196 
204  Person::Ptr owner() const;
205 
214  void setTimeSpec(const KDateTime::Spec &timeSpec);
215 
222  KDateTime::Spec timeSpec() const;
223 
237  void setTimeZoneId(const QString &timeZoneId);
238 
246  QString timeZoneId() const;
247 
262  void setViewTimeSpec(const KDateTime::Spec &timeSpec) const;
263 
282  void setViewTimeZoneId(const QString &timeZoneId) const;
283 
290  KDateTime::Spec viewTimeSpec() const;
291 
298  QString viewTimeZoneId() const;
299 
316  void shiftTimes(const KDateTime::Spec &oldSpec, const KDateTime::Spec &newSpec);
317 
325  ICalTimeZones *timeZones() const;
326 
333  void setTimeZones(ICalTimeZones *zones);
334 
343  void setModified(bool modified);
344 
352  bool isModified() const;
353 
357  virtual void close() = 0;
358 
365  virtual bool save();
366 
374  virtual bool reload();
375 
381  virtual bool isSaving() const;
382 
388  QStringList categories() const;
389 
390  // Incidence Specific Methods //
391 
398  virtual void startBatchAdding();
399 
405  virtual void endBatchAdding();
406 
410  bool batchAdding() const;
411 
421  virtual bool addIncidence(const Incidence::Ptr &incidence);
422 
432  virtual bool deleteIncidence(const Incidence::Ptr &incidence);
433 
439  virtual Incidence::List incidences() const;
440 
448  virtual Incidence::List incidences(const QDate &date) const;
449 
455  virtual Incidence::List rawIncidences() const;
456 
464  virtual Incidence::List instances(const Incidence::Ptr &incidence) const;
465 
466  // Notebook Specific Methods //
467 
472  virtual void clearNotebookAssociations();
473 
482  virtual bool setNotebook(const Incidence::Ptr &incidence, const QString &notebook);
483 
491  virtual QString notebook(const Incidence::Ptr &incidence) const;
492 
500  virtual QString notebook(const QString &uid) const;
501 
507  virtual QStringList notebooks() const;
508 
516  bool hasValidNotebook(const QString &notebook) const;
517 
527  bool addNotebook(const QString &notebook, bool isVisible);
528 
538  bool updateNotebook(const QString &notebook, bool isVisible);
539 
548  bool deleteNotebook(const QString &notebook);
549 
556  bool setDefaultNotebook(const QString &notebook);
557 
563  QString defaultNotebook() const;
564 
570  bool isVisible(const Incidence::Ptr &incidence) const;
571 
578  virtual Incidence::List incidences(const QString &notebook) const;
579 
586  virtual Incidence::List duplicates(const Incidence::Ptr &incidence);
587 
597  Incidence::Ptr incidence(const QString &uid,
598  const KDateTime &recurrenceId = KDateTime()) const;
599 
609  Incidence::Ptr deleted(const QString &uid, const KDateTime &recurrenceId = KDateTime()) const;
610 
617  virtual bool deleteIncidenceInstances(const Incidence::Ptr &incidence) = 0;
618 
627  virtual Incidence::Ptr incidenceFromSchedulingID(const QString &sid) const;
628 
635  virtual Incidence::List incidencesFromSchedulingID(const QString &sid) const;
636 
646  static Incidence::List mergeIncidenceList(const Event::List &events,
647  const Todo::List &todos,
648  const Journal::List &journals);
649 
654  virtual bool beginChange(const Incidence::Ptr &incidence);
655 
660  virtual bool endChange(const Incidence::Ptr &incidence);
661 
680  KCALCORE_DEPRECATED Incidence::Ptr dissociateOccurrence(
681  const Incidence::Ptr &incidence, const QDate &date,
682  const KDateTime::Spec &spec, bool single = true);
697  static Incidence::Ptr createException(const Incidence::Ptr &incidence,
698  const KDateTime &recurrenceId,
699  bool thisAndFuture = false);
700 
701  // Event Specific Methods //
702 
712  virtual bool addEvent(const Event::Ptr &event) = 0;
713 
723  virtual bool deleteEvent(const Event::Ptr &event) = 0;
724 
731  virtual bool deleteEventInstances(const Event::Ptr &event) = 0;
732 
738  virtual void deleteAllEvents() = 0;
739 
749  static Event::List sortEvents(const Event::List &eventList,
750  EventSortField sortField,
751  SortDirection sortDirection);
760  virtual Event::List events(EventSortField sortField = EventSortUnsorted,
761  SortDirection sortDirection = SortDirectionAscending) const;
762 
770  Event::List events(const KDateTime &dt) const;
771 
785  Event::List events(const QDate &start, const QDate &end,
786  const KDateTime::Spec &timeSpec = KDateTime::Spec(),
787  bool inclusive = false) const;
788 
802  Event::List events(const QDate &date,
803  const KDateTime::Spec &timeSpec = KDateTime::Spec(),
804  EventSortField sortField = EventSortUnsorted,
805  SortDirection sortDirection = SortDirectionAscending) const;
806 
815  virtual Event::List rawEvents(
816  EventSortField sortField = EventSortUnsorted,
817  SortDirection sortDirection = SortDirectionAscending) const = 0;
818 
828  virtual Event::List rawEventsForDate(const KDateTime &dt) const = 0;
829 
843  virtual Event::List rawEvents(const QDate &start, const QDate &end,
844  const KDateTime::Spec &timeSpec = KDateTime::Spec(),
845  bool inclusive = false) const = 0;
846 
860  virtual Event::List rawEventsForDate(
861  const QDate &date,
862  const KDateTime::Spec &timeSpec = KDateTime::Spec(),
863  EventSortField sortField = EventSortUnsorted,
864  SortDirection sortDirection = SortDirectionAscending) const = 0;
865 
875  virtual Event::Ptr event(const QString &uid,
876  const KDateTime &recurrenceId = KDateTime()) const = 0;
877 
890  virtual Event::Ptr deletedEvent(const QString &uid,
891  const KDateTime &recurrenceId = KDateTime()) const = 0;
892 
904  virtual Event::List deletedEvents(
905  EventSortField sortField = EventSortUnsorted,
906  SortDirection sortDirection = SortDirectionAscending) const = 0;
907 
917  virtual Event::List eventInstances(
918  const Incidence::Ptr &event,
919  EventSortField sortField = EventSortUnsorted,
920  SortDirection sortDirection = SortDirectionAscending) const = 0;
921 
922  // Todo Specific Methods //
923 
933  virtual bool addTodo(const Todo::Ptr &todo) = 0;
934 
944  virtual bool deleteTodo(const Todo::Ptr &todo) = 0;
945 
951  virtual bool deleteTodoInstances(const Todo::Ptr &todo) = 0;
952 
957  virtual void deleteAllTodos() = 0;
958 
968  static Todo::List sortTodos(const Todo::List &todoList,
969  TodoSortField sortField,
970  SortDirection sortDirection);
971 
980  virtual Todo::List todos(TodoSortField sortField = TodoSortUnsorted,
981  SortDirection sortDirection = SortDirectionAscending) const;
982 
990  virtual Todo::List todos(const QDate &date) const;
991 
1005  virtual Todo::List todos(const QDate &start, const QDate &end,
1006  const KDateTime::Spec &timespec = KDateTime::Spec(),
1007  bool inclusive = false) const;
1008 
1017  virtual Todo::List rawTodos(
1018  TodoSortField sortField = TodoSortUnsorted,
1019  SortDirection sortDirection = SortDirectionAscending) const = 0;
1020 
1028  virtual Todo::List rawTodosForDate(const QDate &date) const = 0;
1029 
1043  virtual Todo::List rawTodos(const QDate &start, const QDate &end,
1044  const KDateTime::Spec &timespec = KDateTime::Spec(),
1045  bool inclusive = false) const = 0;
1046 
1056  virtual Todo::Ptr todo(const QString &uid,
1057  const KDateTime &recurrenceId = KDateTime()) const = 0;
1058 
1071  virtual Todo::Ptr deletedTodo(const QString &uid,
1072  const KDateTime &recurrenceId = KDateTime()) const = 0;
1073 
1085  virtual Todo::List deletedTodos(
1086  TodoSortField sortField = TodoSortUnsorted,
1087  SortDirection sortDirection = SortDirectionAscending) const = 0;
1088 
1098  virtual Todo::List todoInstances(
1099  const Incidence::Ptr &todo,
1100  TodoSortField sortField = TodoSortUnsorted,
1101  SortDirection sortDirection = SortDirectionAscending) const = 0;
1102 
1103  // Journal Specific Methods //
1104 
1114  virtual bool addJournal(const Journal::Ptr &journal) = 0;
1115 
1125  virtual bool deleteJournal(const Journal::Ptr &journal) = 0;
1126 
1133  virtual bool deleteJournalInstances(const Journal::Ptr &journal) = 0;
1134 
1139  virtual void deleteAllJournals() = 0;
1140 
1150  static Journal::List sortJournals(const Journal::List &journalList,
1151  JournalSortField sortField,
1152  SortDirection sortDirection);
1161  virtual Journal::List journals(
1162  JournalSortField sortField = JournalSortUnsorted,
1163  SortDirection sortDirection = SortDirectionAscending) const;
1164 
1172  virtual Journal::List journals(const QDate &date) const;
1173 
1182  virtual Journal::List rawJournals(
1183  JournalSortField sortField = JournalSortUnsorted,
1184  SortDirection sortDirection = SortDirectionAscending) const = 0;
1185 
1193  virtual Journal::List rawJournalsForDate(const QDate &date) const = 0;
1194 
1204  virtual Journal::Ptr journal(const QString &uid,
1205  const KDateTime &recurrenceId = KDateTime()) const = 0;
1206 
1219  virtual Journal::Ptr deletedJournal(const QString &uid,
1220  const KDateTime &recurrenceId = KDateTime()) const = 0;
1221 
1233  virtual Journal::List deletedJournals(
1234  JournalSortField sortField = JournalSortUnsorted,
1235  SortDirection sortDirection = SortDirectionAscending) const = 0;
1236 
1246  virtual Journal::List journalInstances(
1247  const Incidence::Ptr &journal,
1248  JournalSortField sortField = JournalSortUnsorted,
1249  SortDirection sortDirection = SortDirectionAscending) const = 0;
1250 
1251  // Relations Specific Methods //
1252 
1257  virtual void setupRelations(const Incidence::Ptr &incidence);
1258 
1264  virtual void removeRelations(const Incidence::Ptr &incidence);
1265 
1272  bool isAncestorOf(const Incidence::Ptr &ancestor,
1273  const Incidence::Ptr &incidence) const;
1274 
1281  Incidence::List relations(const QString &uid) const;
1282 
1283  // Filter Specific Methods //
1284 
1294  void setFilter(CalFilter *filter);
1295 
1304  CalFilter *filter() const;
1305 
1306  // Alarm Specific Methods //
1307 
1316  virtual Alarm::List alarms(const KDateTime &from, const KDateTime &to) const = 0;
1317 
1318  // Observer Specific Methods //
1319 
1325  class KCALCORE_EXPORT CalendarObserver //krazy:exclude=dpointer
1326  {
1327  public:
1331  virtual ~CalendarObserver();
1332 
1340  virtual void calendarModified(bool modified, Calendar *calendar);
1341 
1346  virtual void calendarIncidenceAdded(const Incidence::Ptr &incidence);
1347 
1352  virtual void calendarIncidenceChanged(const Incidence::Ptr &incidence);
1353 
1358  virtual void calendarIncidenceDeleted(const Incidence::Ptr &incidence);
1359 
1364  virtual void calendarIncidenceAdditionCanceled(const Incidence::Ptr &incidence);
1365  };
1366 
1375  void registerObserver(CalendarObserver *observer);
1376 
1385  void unregisterObserver(CalendarObserver *observer);
1386 
1387  using QObject::event; // prevent warning about hidden virtual method
1388 
1389 protected:
1395  void incidenceUpdated(const QString &uid, const KDateTime &recurrenceId);
1396 
1402  virtual void doSetTimeSpec(const KDateTime::Spec &timeSpec);
1403 
1408  void notifyIncidenceAdded(const Incidence::Ptr &incidence);
1409 
1414  void notifyIncidenceChanged(const Incidence::Ptr &incidence);
1415 
1420  void notifyIncidenceDeleted(const Incidence::Ptr &incidence);
1421 
1426  void notifyIncidenceAdditionCanceled(const Incidence::Ptr &incidence);
1427 
1432  virtual void customPropertyUpdated();
1433 
1440  void setObserversEnabled(bool enabled);
1441 
1451  void appendAlarms(Alarm::List &alarms, const Incidence::Ptr &incidence,
1452  const KDateTime &from, const KDateTime &to) const;
1453 
1463  void appendRecurringAlarms(Alarm::List &alarms, const Incidence::Ptr &incidence,
1464  const KDateTime &from, const KDateTime &to) const;
1465 
1474  void setDeletionTracking(bool enable);
1475 
1481  bool deletionTracking() const;
1482 
1487  virtual void virtual_hook(int id, void *data);
1488 
1489 Q_SIGNALS:
1494  void filterChanged();
1495 
1496 private:
1497  //@cond PRIVATE
1498  class Private;
1499  Private *const d;
1500  //@endcond
1501 
1502  Q_DISABLE_COPY(Calendar)
1503 };
1504 
1505 }
1506 
1507 #endif
KCalCore::JournalSortField
JournalSortField
Calendar Journal sort keys.
Definition: calendar.h:100
KCalCore::Journal::List
QVector< Ptr > List
List of journals.
Definition: journal.h:54
KCalCore::TodoSortStartDate
Sort Todos chronologically, by start date.
Definition: calendar.h:89
customproperties.h
This file is part of the API for handling calendar data and defines the CustomProperties class...
KCalCore::TodoSortPriority
Sort Todos by priority.
Definition: calendar.h:91
KCalCore::Event::Ptr
QSharedPointer< Event > Ptr
A shared pointer to an Event object.
Definition: event.h:55
KCalCore::JournalSortDate
Sort Journals chronologically by date.
Definition: calendar.h:102
KCalCore::Alarm::List
QVector< Ptr > List
List of alarms.
Definition: alarm.h:83
KCalCore::EventSortField
EventSortField
Calendar Event sort keys.
Definition: calendar.h:77
KCalCore::Incidence::Ptr
QSharedPointer< Incidence > Ptr
A shared pointer to an Incidence.
Definition: incidence.h:112
KCalCore::EventSortUnsorted
Do not sort Events.
Definition: calendar.h:78
KCalCore::Event::List
QVector< Ptr > List
List of events.
Definition: event.h:60
KCalCore::EventSortEndDate
Sort Events chronologically, by end date.
Definition: calendar.h:80
KCalCore::TodoSortDueDate
Sort Todos chronologically, by due date.
Definition: calendar.h:90
KCalCore::SortDirection
SortDirection
Calendar Incidence sort directions.
Definition: calendar.h:69
todo.h
This file is part of the API for handling calendar data and defines the Todo class.
KCalCore::JournalSortUnsorted
Do not sort Journals.
Definition: calendar.h:101
KCalCore::SortDirectionAscending
Sort in ascending order (first to last)
Definition: calendar.h:70
KCalCore::TodoSortField
TodoSortField
Calendar Todo sort keys.
Definition: calendar.h:87
journal.h
This file is part of the API for handling calendar data and defines the Journal class.
KCalCore::Calendar::Ptr
QSharedPointer< Calendar > Ptr
A shared pointer to a Calendar.
Definition: calendar.h:138
KCalCore::JournalSortSummary
Sort Journals alphabetically, by summary.
Definition: calendar.h:103
KCalCore::Todo::List
QVector< Ptr > List
List of to-dos.
Definition: todo.h:55
KCalCore::Person::Ptr
QSharedPointer< Person > Ptr
A shared pointer to a Person object.
Definition: person.h:56
KCalCore::CustomProperties
A class to manage custom calendar properties.
Definition: customproperties.h:51
KCalCore::Calendar::CalendarObserver
The CalendarObserver class.
Definition: calendar.h:1325
event.h
This file is part of the API for handling calendar data and defines the Event class.
incidence.h
This file is part of the API for handling calendar data and defines the Incidence class...
KCalCore::Incidence::List
QVector< Ptr > List
List of incidences.
Definition: incidence.h:117
KCalCore::ICalTimeZones
The ICalTimeZones class represents a time zone database which consists of a collection of individual ...
Definition: icaltimezones.h:65
KCalCore::EventSortSummary
Sort Events alphabetically, by summary.
Definition: calendar.h:81
KCalCore::Calendar
Represents the main calendar class.
Definition: calendar.h:128
KCalCore::IncidenceBase::IncidenceObserver
The IncidenceObserver class.
Definition: incidencebase.h:199
KCalCore::SortDirectionDescending
Sort in descending order (last to first)
Definition: calendar.h:71
KCalCore::Todo::Ptr
QSharedPointer< Todo > Ptr
A shared pointer to a Todo object.
Definition: todo.h:50
KCalCore::TodoSortSummary
Sort Todos alphabetically, by summary.
Definition: calendar.h:93
KCalCore::TodoSortUnsorted
Do not sort Todos.
Definition: calendar.h:88
KCalCore::Journal::Ptr
QSharedPointer< Journal > Ptr
A shared pointer to a Journal object.
Definition: journal.h:49
KCalCore::CalFilter
Provides a filter for calendars.
Definition: calfilter.h:55
KCalCore::TodoSortPercentComplete
Sort Todos by percentage completed.
Definition: calendar.h:92
KCalCore::EventSortStartDate
Sort Events chronologically, by start date.
Definition: calendar.h:79
KCalCore::TodoSortCreated
Sort Todos chronologically, by creation date.
Definition: calendar.h:94
This file is part of the KDE documentation.
Documentation copyright © 1996-2014 The KDE developers.
Generated on Tue Oct 14 2014 22:59:57 by doxygen 1.8.7 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 API Reference

Skip menu "kdepimlibs API Reference"
  • akonadi
  •   contact
  •   kmime
  •   socialutils
  • kabc
  • kalarmcal
  • kblog
  • kcal
  • kcalcore
  • kcalutils
  • kholidays
  • kimap
  • kldap
  • kmbox
  • kmime
  • kpimidentities
  • kpimtextedit
  • kresources
  • ktnef
  • kxmlrpcclient
  • microblog

Search



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