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 */
192 #ifndef MKCAL_EXTENDEDCALENDAR_H
193 #define MKCAL_EXTENDEDCALENDAR_H
194 
195 #include "mkcal_export.h"
196 
197 #include <KCalendarCore/MemoryCalendar>
198 #include <extendedstorageobserver.h>
199 
200 namespace mKCal {
201 
202 class ExtendedStorage;
203 class Notebook;
204 
209 class MKCAL_EXPORT ExtendedCalendar : public KCalendarCore::MemoryCalendar,
210  public ExtendedStorageObserver
211 {
212 public:
217  enum IncidenceSortField {
218  IncidenceSortUnsorted,
219  IncidenceSortDate,
223  IncidenceSortCreated /* < Sort Incidences based on creation time */
224  };
225 
229  typedef QSharedPointer<ExtendedCalendar> Ptr;
230 
235  explicit ExtendedCalendar(const QTimeZone &timeZone);
236 
241  explicit ExtendedCalendar(const QByteArray &timeZoneId);
242 
247  ~ExtendedCalendar();
248 
253  bool reload();
254 
259  bool save();
260 
265  void close();
266 
275  /* KCalendarCore::ICalTimeZone parseZone(KCalendarCore::MSTimeZone *tz); */
276 
287  KCalendarCore::Incidence::Ptr dissociateSingleOccurrence(const KCalendarCore::Incidence::Ptr &incidence,
288  const QDateTime &dateTime);
289 
294  bool addIncidence(const KCalendarCore::Incidence::Ptr &incidence);
295 
305  bool addIncidence(const KCalendarCore::Incidence::Ptr &incidence, const QString &notebookUid);
306 
311  bool deleteIncidence(const KCalendarCore::Incidence::Ptr &incidence);
312 
313  // Event Specific Methods //
314 
319  bool addEvent(const KCalendarCore::Event::Ptr &event);
320 
330  bool addEvent(const KCalendarCore::Event::Ptr &event, const QString &notebookUid);
331 
340  bool deleteEvent(const KCalendarCore::Event::Ptr &event);
341 
346  QDate nextEventsDate(const QDate &, const QTimeZone &timespec = QTimeZone());
347 
352  QDate previousEventsDate(const QDate &, const QTimeZone &timespec = QTimeZone());
353 
354 
355  // To-do Specific Methods //
356 
361  bool addTodo(const KCalendarCore::Todo::Ptr &todo);
362 
372  bool addTodo(const KCalendarCore::Todo::Ptr &todo, const QString &notebookUid);
373 
381  bool deleteTodo(const KCalendarCore::Todo::Ptr &todo);
382 
383  // Journal Specific Methods //
384 
389  bool addJournal(const KCalendarCore::Journal::Ptr &journal);
390 
400  bool addJournal(const KCalendarCore::Journal::Ptr &journal, const QString &notebookUid);
401 
409  bool deleteJournal(const KCalendarCore::Journal::Ptr &journal);
410 
411  using KCalendarCore::Calendar::rawJournals;
425  KCalendarCore::Journal::List rawJournals(
426  const QDate &start, const QDate &end,
427  const QTimeZone &timespec = QTimeZone(),
428  bool inclusive = false) const;
429 
435  void incidenceUpdate(const QString &uid, const QDateTime &recurrenceId);
436 
442  void incidenceUpdated(const QString &uid, const QDateTime &recurrenceId);
443 
444  // Incidence Specific Methods, also see Calendar.h for more //
445 
452  QStringList attendees();
453 
460  KCalendarCore::Incidence::List attendeeIncidences(const QString &email);
461 
467  KCalendarCore::Incidence::List geoIncidences();
468 
478  KCalendarCore::Incidence::List geoIncidences(float geoLatitude, float geoLongitude,
479  float diffLatitude, float diffLongitude);
480 
489  virtual KCalendarCore::Incidence::List incidences(const QDate &date,
490  const QList<KCalendarCore::Incidence::IncidenceType> &types);
491 
496  void deleteAllIncidences();
497 
507  static KCalendarCore::Incidence::List sortIncidences(
508  KCalendarCore::Incidence::List *list,
509  IncidenceSortField sortField = IncidenceSortDate,
510  KCalendarCore::SortDirection sortDirection = KCalendarCore::SortDirectionAscending);
511 
517  typedef struct ExpandedIncidenceValidity {
518  QDateTime dtStart;
519  QDateTime dtEnd;
520  } ExpandedIncidenceValidity;
521 
528  typedef QPair<ExpandedIncidenceValidity, KCalendarCore::Incidence::Ptr> ExpandedIncidence;
529 
533  typedef QVector<ExpandedIncidence> ExpandedIncidenceList;
534  typedef QVectorIterator<ExpandedIncidence> ExpandedIncidenceIterator;
535 
553  ExpandedIncidenceList expandRecurrences(KCalendarCore::Incidence::List *list,
554  const QDateTime &start,
555  const QDateTime &end,
556  int maxExpand = 1000,
557  bool *expandLimitHit = 0);
558 
565  ExpandedIncidenceList rawExpandedEvents(const QDate &start, const QDate &end,
566  bool startInclusive = false, bool endInclusive = false,
567  const QTimeZone &timeZone = QTimeZone()) const;
568 
593  ExpandedIncidenceList expandMultiDay(const ExpandedIncidenceList &list,
594  const QDate &startDate,
595  const QDate &endDate,
596  int maxExpand = 1000,
597  bool merge = true,
598  bool *expandLimitHit = 0);
599 
600  using KCalendarCore::Calendar::incidences;
601 
611  KCalendarCore::Incidence::List incidences(const QDate &start, const QDate &end);
612 
622  static QSharedPointer<ExtendedStorage> defaultStorage(const ExtendedCalendar::Ptr
623  &calendar); //No typedef to avoid cyclic includes
624 
625  // Smart Loading Methods, see ExtendedStorage.h for more //
626 
635  KCalendarCore::Todo::List uncompletedTodos(bool hasDate, int hasGeo);
636 
646  KCalendarCore::Todo::List completedTodos(bool hasDate, int hasGeo,
647  const QDateTime &start, const QDateTime &end);
648 
657  KCalendarCore::Incidence::List incidences(bool hasDate, const QDateTime &start,
658  const QDateTime &end);
659 
668  KCalendarCore::Incidence::List geoIncidences(bool hasDate, const QDateTime &start,
669  const QDateTime &end);
670 
678  KCalendarCore::Incidence::List unreadInvitationIncidences(
679  const KCalendarCore::Person &person = KCalendarCore::Person());
680 
689  KCalendarCore::Incidence::List oldInvitationIncidences(const QDateTime &start,
690  const QDateTime &end);
691 
701  KCalendarCore::Incidence::List contactIncidences(const KCalendarCore::Person &person,
702  const QDateTime &start, const QDateTime &end);
703 
704  using KCalendarCore::Calendar::journals;
705 
713  KCalendarCore::Journal::List journals(const QDate &start, const QDate &end);
714 
726  KCalendarCore::Incidence::List addIncidences(KCalendarCore::Incidence::List *list,
727  const QString &notebookUid,
728  bool duplicateRemovalEnabled = true);
729 
736  int eventCount(const QString &notebookUid = QString());
737 
744  int todoCount(const QString &notebookUid = QString());
745 
752  int journalCount(const QString &notebookUid = QString());
753 
754 protected:
755 
760  virtual void storageModified(ExtendedStorage *storage, const QString &info);
761  virtual void storageProgress(ExtendedStorage *storage, const QString &info);
762  virtual void storageFinished(ExtendedStorage *storage, bool error, const QString &info);
763 
764 
765 private:
766  //@cond PRIVATE
767  Q_DISABLE_COPY(ExtendedCalendar)
768  class MKCAL_HIDE Private;
769  Private *const d;
770  //@endcond
771 };
772 
773 }
774 
775 #endif
validity dtEnd
Definition: extendedcalendar.cpp:990
This file is part of the API for handling calendar data and defines the ExtendedStorageObserver to be...
#define MKCAL_EXPORT
Definition: mkcal_export.h:27
#define MKCAL_HIDE
Definition: mkcal_export.h:31
Definition: extendedstorage.h:47

Generated on Wed Jun 9 2021 13:59:25 for libextendedkcal by doxygen 1.9.1