193 #ifndef MKCAL_EXTENDEDCALENDAR_H
194 #define MKCAL_EXTENDEDCALENDAR_H
198 #include <calendar.h>
199 #include <icaltimezones.h>
204 class ExtendedStorage;
211 class MKCAL_EXPORT ExtendedCalendar :
public KCalCore::Calendar,
212 public ExtendedStorageObserver
219 enum IncidenceSortField {
220 IncidenceSortUnsorted,
231 typedef QSharedPointer<ExtendedCalendar> Ptr;
237 explicit ExtendedCalendar(
const KDateTime::Spec &timeSpec);
243 explicit ExtendedCalendar(
const QString &timeZoneId);
249 virtual ~ExtendedCalendar();
276 KCalCore::ICalTimeZone parseZone(KCalCore::MSTimeZone *tz);
282 void doSetTimeSpec(
const KDateTime::Spec &timeSpec);
294 KCalCore::Incidence::Ptr dissociateSingleOccurrence(
const KCalCore::Incidence::Ptr &incidence,
295 const KDateTime &dateTime,
296 const KDateTime::Spec &spec);
304 bool addEvent(
const KCalCore::Event::Ptr &event);
315 bool addEvent(
const KCalCore::Event::Ptr &event,
const QString ¬ebookUid);
321 bool deleteEventInstances(
const KCalCore::Event::Ptr &event);
331 bool deleteEvent(
const KCalCore::Event::Ptr &event);
337 void deleteAllEvents();
343 KCalCore::Event::List rawEvents(
344 KCalCore::EventSortField sortField = KCalCore::EventSortUnsorted,
345 KCalCore::SortDirection sortDirection = KCalCore::SortDirectionAscending)
const;
351 KCalCore::Event::List rawEvents(
352 const QDate &start,
const QDate &end,
353 const KDateTime::Spec ×pec = KDateTime::Spec(),
354 bool inclusive =
false)
const;
361 KCalCore::Event::List rawEventsForDate(
362 const QDate &date,
const KDateTime::Spec ×pec = KDateTime::Spec(),
363 KCalCore::EventSortField sortField = KCalCore::EventSortUnsorted,
364 KCalCore::SortDirection sortDirection = KCalCore::SortDirectionAscending)
const;
370 KCalCore::Event::List rawEventsForDate(
const KDateTime &dt)
const;
376 KCalCore::Event::Ptr event(
const QString &uid,
377 const KDateTime &recurrenceId = KDateTime())
const;
383 KCalCore::Event::Ptr deletedEvent(
const QString &uid,
384 const KDateTime &recurrenceId = KDateTime())
const;
390 KCalCore::Event::List deletedEvents(
391 KCalCore::EventSortField sortField = KCalCore::EventSortUnsorted,
392 KCalCore::SortDirection sortDirection = KCalCore::SortDirectionAscending)
const;
399 KCalCore::Event::List eventInstances(
400 const KCalCore::Incidence::Ptr &event,
401 KCalCore::EventSortField sortField = KCalCore::EventSortUnsorted,
402 KCalCore::SortDirection sortDirection = KCalCore::SortDirectionAscending)
const;
409 QDate nextEventsDate(
const QDate &,
const KDateTime::Spec ×pec = KDateTime::Spec());
415 QDate previousEventsDate(
const QDate &,
const KDateTime::Spec ×pec = KDateTime::Spec());
424 bool addTodo(
const KCalCore::Todo::Ptr &todo);
435 bool addTodo(
const KCalCore::Todo::Ptr &todo,
const QString ¬ebookUid);
444 bool deleteTodo(
const KCalCore::Todo::Ptr &todo);
450 bool deleteTodoInstances(
const KCalCore::Todo::Ptr &todo);
456 void deleteAllTodos();
462 KCalCore::Todo::List rawTodos(
463 KCalCore::TodoSortField sortField = KCalCore::TodoSortUnsorted,
464 KCalCore::SortDirection sortDirection = KCalCore::SortDirectionAscending)
const;
470 KCalCore::Todo::List rawTodos(
471 const QDate &start,
const QDate &end,
472 const KDateTime::Spec ×pec = KDateTime::Spec(),
473 bool inclusive =
false)
const;
479 KCalCore::Todo::List rawTodosForDate(
const QDate &date)
const;
485 KCalCore::Todo::Ptr todo(
const QString &uid,
486 const KDateTime &recurrenceId = KDateTime())
const;
492 KCalCore::Todo::Ptr deletedTodo(
const QString &uid,
493 const KDateTime &recurrenceId = KDateTime())
const;
499 KCalCore::Todo::List deletedTodos(
500 KCalCore::TodoSortField sortField = KCalCore::TodoSortUnsorted,
501 KCalCore::SortDirection sortDirection = KCalCore::SortDirectionAscending)
const;
508 KCalCore::Todo::List todoInstances(
509 const KCalCore::Incidence::Ptr &todo,
510 KCalCore::TodoSortField sortField = KCalCore::TodoSortUnsorted,
511 KCalCore::SortDirection sortDirection = KCalCore::SortDirectionAscending)
const;
519 bool addJournal(
const KCalCore::Journal::Ptr &journal);
530 bool addJournal(
const KCalCore::Journal::Ptr &journal,
const QString ¬ebookUid);
539 bool deleteJournal(
const KCalCore::Journal::Ptr &journal);
545 bool deleteJournalInstances(
const KCalCore::Journal::Ptr &journal);
551 void deleteAllJournals();
557 KCalCore::Journal::List rawJournals(
558 KCalCore::JournalSortField sortField = KCalCore::JournalSortUnsorted,
559 KCalCore::SortDirection sortDirection = KCalCore::SortDirectionAscending)
const;
574 KCalCore::Journal::List rawJournals(
575 const QDate &start,
const QDate &end,
576 const KDateTime::Spec ×pec = KDateTime::Spec(),
577 bool inclusive =
false)
const;
583 KCalCore::Journal::List rawJournalsForDate(
const QDate &date)
const;
589 KCalCore::Journal::Ptr journal(
const QString &uid,
590 const KDateTime &recurrenceId = KDateTime())
const;
596 KCalCore::Journal::Ptr deletedJournal(
const QString &uid,
597 const KDateTime &recurrenceId = KDateTime())
const;
603 KCalCore::Journal::List deletedJournals(
604 KCalCore::JournalSortField sortField = KCalCore::JournalSortUnsorted,
605 KCalCore::SortDirection sortDirection = KCalCore::SortDirectionAscending)
const;
612 KCalCore::Journal::List journalInstances(
613 const KCalCore::Incidence::Ptr &journal,
614 KCalCore::JournalSortField sortField = KCalCore::JournalSortUnsorted,
615 KCalCore::SortDirection sortDirection = KCalCore::SortDirectionAscending)
const;
623 KCalCore::Alarm::List alarms(
const KDateTime &from,
const KDateTime &to)
const;
631 KCalCore::Alarm::List alarmsTo(
const KDateTime &to)
const;
638 void incidenceUpdate(
const QString &uid,
const KDateTime &recurrenceId);
645 void incidenceUpdated(
const QString &uid,
const KDateTime &recurrenceId);
647 using QObject::event;
657 QStringList attendees();
665 KCalCore::Incidence::List attendeeIncidences(
const QString &email);
672 KCalCore::Incidence::List geoIncidences();
683 KCalCore::Incidence::List geoIncidences(
float geoLatitude,
float geoLongitude,
684 float diffLatitude,
float diffLongitude);
694 virtual KCalCore::Incidence::List incidences(
const QDate &date,
695 const QList<KCalCore::Incidence::IncidenceType> &types);
701 void deleteAllIncidences();
710 bool deleteIncidenceInstances(
const KCalCore::Incidence::Ptr &incidence);
721 static KCalCore::Incidence::List sortIncidences(
722 KCalCore::Incidence::List *list,
723 IncidenceSortField sortField = IncidenceSortDate,
724 KCalCore::SortDirection sortDirection = KCalCore::SortDirectionAscending);
731 typedef struct ExpandedIncidenceValidity {
734 } ExpandedIncidenceValidity;
742 typedef QPair<ExpandedIncidenceValidity, KCalCore::Incidence::Ptr> ExpandedIncidence;
747 typedef QVector<ExpandedIncidence> ExpandedIncidenceList;
748 typedef QVectorIterator<ExpandedIncidence> ExpandedIncidenceIterator;
767 ExpandedIncidenceList expandRecurrences(KCalCore::Incidence::List *list,
768 const KDateTime &start,
769 const KDateTime &end,
770 int maxExpand = 1000,
771 bool *expandLimitHit = 0);
779 ExpandedIncidenceList rawExpandedEvents(
const QDate &start,
const QDate &end,
780 bool startInclusive =
false,
bool endInclusive =
false,
781 const KDateTime::Spec ×pec = KDateTime::Spec())
const;
807 ExpandedIncidenceList expandMultiDay(
const ExpandedIncidenceList &list,
808 const QDate &startDate,
809 const QDate &endDate,
810 int maxExpand = 1000,
812 bool *expandLimitHit = 0);
814 using KCalCore::Calendar::incidences;
825 KCalCore::Incidence::List incidences(
const QDate &start,
const QDate &end);
836 static QSharedPointer<ExtendedStorage> defaultStorage(
const ExtendedCalendar::Ptr
849 KCalCore::Todo::List uncompletedTodos(
bool hasDate,
int hasGeo);
860 KCalCore::Todo::List completedTodos(
bool hasDate,
int hasGeo,
861 const KDateTime &start,
const KDateTime &end);
871 KCalCore::Incidence::List incidences(
bool hasDate,
const KDateTime &start,
872 const KDateTime &end);
882 KCalCore::Incidence::List geoIncidences(
bool hasDate,
const KDateTime &start,
883 const KDateTime &end);
892 KCalCore::Incidence::List unreadInvitationIncidences(
893 const KCalCore::Person::Ptr &person = KCalCore::Person::Ptr());
903 KCalCore::Incidence::List oldInvitationIncidences(
const KDateTime &start,
904 const KDateTime &end);
915 KCalCore::Incidence::List contactIncidences(
const KCalCore::Person::Ptr &person,
916 const KDateTime &start,
const KDateTime &end);
918 using KCalCore::Calendar::journals;
927 KCalCore::Journal::List journals(
const QDate &start,
const QDate &end);
932 KCalCore::Journal::List journals(
const QDate &date)
const;
945 KCalCore::Incidence::List addIncidences(KCalCore::Incidence::List *list,
946 const QString ¬ebookUid,
947 bool duplicateRemovalEnabled =
true);
955 int eventCount(
const QString ¬ebookUid = QString());
963 int todoCount(
const QString ¬ebookUid = QString());
971 int journalCount(
const QString ¬ebookUid = QString());
977 virtual void virtual_hook(
int id,
void *data);
985 virtual void storageModified(ExtendedStorage *storage,
const QString &info);
986 virtual void storageProgress(ExtendedStorage *storage,
const QString &info);
987 virtual void storageFinished(ExtendedStorage *storage,
bool error,
const QString &info);
992 Q_DISABLE_COPY(ExtendedCalendar)