extendedcalendar.h
Go to the documentation of this file.
1 /*
2  This file is part of the mkcal library.
3 
4  Copyright (c) 1998 Preston Brown <pbrown@kde.org>
5  Copyright (c) 2001,2003 Cornelius Schumacher <schumacher@kde.org>
6  Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies). All rights reserved.
7  Contact: Alvaro Manera <alvaro.manera@nokia.com>
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 */
193 #ifndef MKCAL_EXTENDEDCALENDAR_H
194 #define MKCAL_EXTENDEDCALENDAR_H
195 
196 #include "mkcal_export.h"
197 
198 #include <calendar.h>
199 #include <icaltimezones.h>
200 #include <extendedstorageobserver.h>
201 
202 namespace mKCal {
203 
204 class ExtendedStorage;
205 class Notebook;
206 
211 class MKCAL_EXPORT ExtendedCalendar : public KCalCore::Calendar,
212  public ExtendedStorageObserver
213 {
214 public:
219  enum IncidenceSortField {
220  IncidenceSortUnsorted,
221  IncidenceSortDate,
225  IncidenceSortCreated /* < Sort Incidences based on creation time */
226  };
227 
231  typedef QSharedPointer<ExtendedCalendar> Ptr;
232 
237  explicit ExtendedCalendar(const KDateTime::Spec &timeSpec);
238 
243  explicit ExtendedCalendar(const QString &timeZoneId);
244 
249  virtual ~ExtendedCalendar();
250 
255  bool reload();
256 
261  bool save();
262 
266  void close();
267 
276  KCalCore::ICalTimeZone parseZone(KCalCore::MSTimeZone *tz);
277 
282  void doSetTimeSpec(const KDateTime::Spec &timeSpec);
283 
294  KCalCore::Incidence::Ptr dissociateSingleOccurrence(const KCalCore::Incidence::Ptr &incidence,
295  const KDateTime &dateTime,
296  const KDateTime::Spec &spec);
297 
298  // Event Specific Methods //
299 
304  bool addEvent(const KCalCore::Event::Ptr &event);
305 
315  bool addEvent(const KCalCore::Event::Ptr &event, const QString &notebookUid);
316 
321  bool deleteEventInstances(const KCalCore::Event::Ptr &event);
322 
331  bool deleteEvent(const KCalCore::Event::Ptr &event);
332 
337  void deleteAllEvents();
338 
343  KCalCore::Event::List rawEvents(
344  KCalCore::EventSortField sortField = KCalCore::EventSortUnsorted,
345  KCalCore::SortDirection sortDirection = KCalCore::SortDirectionAscending) const;
346 
351  KCalCore::Event::List rawEvents(
352  const QDate &start, const QDate &end,
353  const KDateTime::Spec &timespec = KDateTime::Spec(),
354  bool inclusive = false) const;
355 
361  KCalCore::Event::List rawEventsForDate(
362  const QDate &date, const KDateTime::Spec &timespec = KDateTime::Spec(),
363  KCalCore::EventSortField sortField = KCalCore::EventSortUnsorted,
364  KCalCore::SortDirection sortDirection = KCalCore::SortDirectionAscending) const;
365 
370  KCalCore::Event::List rawEventsForDate(const KDateTime &dt) const;
371 
376  KCalCore::Event::Ptr event(const QString &uid,
377  const KDateTime &recurrenceId = KDateTime()) const;
378 
383  KCalCore::Event::Ptr deletedEvent(const QString &uid,
384  const KDateTime &recurrenceId = KDateTime()) const;
385 
390  KCalCore::Event::List deletedEvents(
391  KCalCore::EventSortField sortField = KCalCore::EventSortUnsorted,
392  KCalCore::SortDirection sortDirection = KCalCore::SortDirectionAscending) const;
393 
399  KCalCore::Event::List eventInstances(
400  const KCalCore::Incidence::Ptr &event,
401  KCalCore::EventSortField sortField = KCalCore::EventSortUnsorted,
402  KCalCore::SortDirection sortDirection = KCalCore::SortDirectionAscending) const;
403 
404 
409  QDate nextEventsDate(const QDate &, const KDateTime::Spec &timespec = KDateTime::Spec());
410 
415  QDate previousEventsDate(const QDate &, const KDateTime::Spec &timespec = KDateTime::Spec());
416 
417 
418  // To-do Specific Methods //
419 
424  bool addTodo(const KCalCore::Todo::Ptr &todo);
425 
435  bool addTodo(const KCalCore::Todo::Ptr &todo, const QString &notebookUid);
436 
444  bool deleteTodo(const KCalCore::Todo::Ptr &todo);
445 
450  bool deleteTodoInstances(const KCalCore::Todo::Ptr &todo);
451 
456  void deleteAllTodos();
457 
462  KCalCore::Todo::List rawTodos(
463  KCalCore::TodoSortField sortField = KCalCore::TodoSortUnsorted,
464  KCalCore::SortDirection sortDirection = KCalCore::SortDirectionAscending) const;
465 
470  KCalCore::Todo::List rawTodos(
471  const QDate &start, const QDate &end,
472  const KDateTime::Spec &timespec = KDateTime::Spec(),
473  bool inclusive = false) const;
474 
479  KCalCore::Todo::List rawTodosForDate(const QDate &date) const;
480 
485  KCalCore::Todo::Ptr todo(const QString &uid,
486  const KDateTime &recurrenceId = KDateTime()) const;
487 
492  KCalCore::Todo::Ptr deletedTodo(const QString &uid,
493  const KDateTime &recurrenceId = KDateTime()) const;
494 
499  KCalCore::Todo::List deletedTodos(
500  KCalCore::TodoSortField sortField = KCalCore::TodoSortUnsorted,
501  KCalCore::SortDirection sortDirection = KCalCore::SortDirectionAscending) const;
502 
508  KCalCore::Todo::List todoInstances(
509  const KCalCore::Incidence::Ptr &todo,
510  KCalCore::TodoSortField sortField = KCalCore::TodoSortUnsorted,
511  KCalCore::SortDirection sortDirection = KCalCore::SortDirectionAscending) const;
512 
513  // Journal Specific Methods //
514 
519  bool addJournal(const KCalCore::Journal::Ptr &journal);
520 
530  bool addJournal(const KCalCore::Journal::Ptr &journal, const QString &notebookUid);
531 
539  bool deleteJournal(const KCalCore::Journal::Ptr &journal);
540 
545  bool deleteJournalInstances(const KCalCore::Journal::Ptr &journal);
546 
551  void deleteAllJournals();
552 
557  KCalCore::Journal::List rawJournals(
558  KCalCore::JournalSortField sortField = KCalCore::JournalSortUnsorted,
559  KCalCore::SortDirection sortDirection = KCalCore::SortDirectionAscending) const;
560 
574  KCalCore::Journal::List rawJournals(
575  const QDate &start, const QDate &end,
576  const KDateTime::Spec &timespec = KDateTime::Spec(),
577  bool inclusive = false) const;
578 
583  KCalCore::Journal::List rawJournalsForDate(const QDate &date) const;
584 
589  KCalCore::Journal::Ptr journal(const QString &uid,
590  const KDateTime &recurrenceId = KDateTime()) const;
591 
596  KCalCore::Journal::Ptr deletedJournal(const QString &uid,
597  const KDateTime &recurrenceId = KDateTime()) const;
598 
603  KCalCore::Journal::List deletedJournals(
604  KCalCore::JournalSortField sortField = KCalCore::JournalSortUnsorted,
605  KCalCore::SortDirection sortDirection = KCalCore::SortDirectionAscending) const;
606 
612  KCalCore::Journal::List journalInstances(
613  const KCalCore::Incidence::Ptr &journal,
614  KCalCore::JournalSortField sortField = KCalCore::JournalSortUnsorted,
615  KCalCore::SortDirection sortDirection = KCalCore::SortDirectionAscending) const;
616 
617  // Alarm Specific Methods //
618 
623  KCalCore::Alarm::List alarms(const KDateTime &from, const KDateTime &to) const;
624 
631  KCalCore::Alarm::List alarmsTo(const KDateTime &to) const;
632 
638  void incidenceUpdate(const QString &uid, const KDateTime &recurrenceId);
639 
645  void incidenceUpdated(const QString &uid, const KDateTime &recurrenceId);
646 
647  using QObject::event; // prevent warning about hidden virtual method
648 
649  // Incidence Specific Methods, also see Calendar.h for more //
650 
657  QStringList attendees();
658 
665  KCalCore::Incidence::List attendeeIncidences(const QString &email);
666 
672  KCalCore::Incidence::List geoIncidences();
673 
683  KCalCore::Incidence::List geoIncidences(float geoLatitude, float geoLongitude,
684  float diffLatitude, float diffLongitude);
685 
694  virtual KCalCore::Incidence::List incidences(const QDate &date,
695  const QList<KCalCore::Incidence::IncidenceType> &types);
696 
701  void deleteAllIncidences();
702 
710  bool deleteIncidenceInstances(const KCalCore::Incidence::Ptr &incidence);
711 
721  static KCalCore::Incidence::List sortIncidences(
722  KCalCore::Incidence::List *list,
723  IncidenceSortField sortField = IncidenceSortDate,
724  KCalCore::SortDirection sortDirection = KCalCore::SortDirectionAscending);
725 
731  typedef struct ExpandedIncidenceValidity {
732  QDateTime dtStart;
733  QDateTime dtEnd;
734  } ExpandedIncidenceValidity;
735 
742  typedef QPair<ExpandedIncidenceValidity, KCalCore::Incidence::Ptr> ExpandedIncidence;
743 
747  typedef QVector<ExpandedIncidence> ExpandedIncidenceList;
748  typedef QVectorIterator<ExpandedIncidence> ExpandedIncidenceIterator;
749 
767  ExpandedIncidenceList expandRecurrences(KCalCore::Incidence::List *list,
768  const KDateTime &start,
769  const KDateTime &end,
770  int maxExpand = 1000,
771  bool *expandLimitHit = 0);
772 
779  ExpandedIncidenceList rawExpandedEvents(const QDate &start, const QDate &end,
780  bool startInclusive = false, bool endInclusive = false,
781  const KDateTime::Spec &timespec = KDateTime::Spec()) const;
782 
807  ExpandedIncidenceList expandMultiDay(const ExpandedIncidenceList &list,
808  const QDate &startDate,
809  const QDate &endDate,
810  int maxExpand = 1000,
811  bool merge = true,
812  bool *expandLimitHit = 0);
813 
814  using KCalCore::Calendar::incidences;
815 
825  KCalCore::Incidence::List incidences(const QDate &start, const QDate &end);
826 
836  static QSharedPointer<ExtendedStorage> defaultStorage(const ExtendedCalendar::Ptr
837  &calendar); //No typedef to avoid cyclic includes
838 
839  // Smart Loading Methods, see ExtendedStorage.h for more //
840 
849  KCalCore::Todo::List uncompletedTodos(bool hasDate, int hasGeo);
850 
860  KCalCore::Todo::List completedTodos(bool hasDate, int hasGeo,
861  const KDateTime &start, const KDateTime &end);
862 
871  KCalCore::Incidence::List incidences(bool hasDate, const KDateTime &start,
872  const KDateTime &end);
873 
882  KCalCore::Incidence::List geoIncidences(bool hasDate, const KDateTime &start,
883  const KDateTime &end);
884 
892  KCalCore::Incidence::List unreadInvitationIncidences(
893  const KCalCore::Person::Ptr &person = KCalCore::Person::Ptr());
894 
903  KCalCore::Incidence::List oldInvitationIncidences(const KDateTime &start,
904  const KDateTime &end);
905 
915  KCalCore::Incidence::List contactIncidences(const KCalCore::Person::Ptr &person,
916  const KDateTime &start, const KDateTime &end);
917 
918  using KCalCore::Calendar::journals;
919 
927  KCalCore::Journal::List journals(const QDate &start, const QDate &end);
928 
932  KCalCore::Journal::List journals(const QDate &date) const;
933 
945  KCalCore::Incidence::List addIncidences(KCalCore::Incidence::List *list,
946  const QString &notebookUid,
947  bool duplicateRemovalEnabled = true);
948 
955  int eventCount(const QString &notebookUid = QString());
956 
963  int todoCount(const QString &notebookUid = QString());
964 
971  int journalCount(const QString &notebookUid = QString());
972 
977  virtual void virtual_hook(int id, void *data);
978 
979 protected:
980 
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);
988 
989 
990 private:
991  //@cond PRIVATE
992  Q_DISABLE_COPY(ExtendedCalendar)
993  class MKCAL_HIDE Private;
994  Private *const d;
995  //@endcond
996 };
997 
998 }
999 
1000 #endif
MKCAL_HIDE
#define MKCAL_HIDE
Definition: mkcal_export.h:31
extendedstorageobserver.h
mkcal_export.h
mKCal
Definition: extendedstorage.h:49
MKCAL_EXPORT
#define MKCAL_EXPORT
Definition: mkcal_export.h:27
dtEnd
validity dtEnd
Definition: extendedcalendar.cpp:1790

Generated on Sat Oct 17 2020 06:54:57 for libextendedkcal by doxygen 1.8.17