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>
199
200namespace mKCal {
201
202class ExtendedStorage;
203class Notebook;
204
209class MKCAL_EXPORT ExtendedCalendar : public KCalendarCore::MemoryCalendar,
210 public ExtendedStorageObserver
211{
212public:
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
583 ExpandedIncidenceList expandMultiDay(const ExpandedIncidenceList &list,
584 const QDate &startDate,
585 const QDate &endDate,
586 int maxExpand = 1000,
587 bool merge = true,
588 bool *expandLimitHit = 0);
589
590 using KCalendarCore::Calendar::incidences;
591
601 KCalendarCore::Incidence::List incidences(const QDate &start, const QDate &end);
602
612 static QSharedPointer<ExtendedStorage> defaultStorage(const ExtendedCalendar::Ptr
613 &calendar); //No typedef to avoid cyclic includes
614
615 // Smart Loading Methods, see ExtendedStorage.h for more //
616
625 KCalendarCore::Todo::List uncompletedTodos(bool hasDate, int hasGeo);
626
636 KCalendarCore::Todo::List completedTodos(bool hasDate, int hasGeo,
637 const QDateTime &start, const QDateTime &end);
638
647 KCalendarCore::Incidence::List incidences(bool hasDate, const QDateTime &start,
648 const QDateTime &end);
649
658 KCalendarCore::Incidence::List geoIncidences(bool hasDate, const QDateTime &start,
659 const QDateTime &end);
660
668 KCalendarCore::Incidence::List unreadInvitationIncidences(
669 const KCalendarCore::Person &person = KCalendarCore::Person());
670
679 KCalendarCore::Incidence::List oldInvitationIncidences(const QDateTime &start,
680 const QDateTime &end);
681
691 KCalendarCore::Incidence::List contactIncidences(const KCalendarCore::Person &person,
692 const QDateTime &start, const QDateTime &end);
693
694 using KCalendarCore::Calendar::journals;
695
703 KCalendarCore::Journal::List journals(const QDate &start, const QDate &end);
704
716 KCalendarCore::Incidence::List addIncidences(KCalendarCore::Incidence::List *list,
717 const QString &notebookUid,
718 bool duplicateRemovalEnabled = true);
719
726 int eventCount(const QString &notebookUid = QString());
727
734 int todoCount(const QString &notebookUid = QString());
735
742 int journalCount(const QString &notebookUid = QString());
743
744protected:
745
750 virtual void storageModified(ExtendedStorage *storage, const QString &info);
751 virtual void storageProgress(ExtendedStorage *storage, const QString &info);
752 virtual void storageFinished(ExtendedStorage *storage, bool error, const QString &info);
753
754
755private:
756 //@cond PRIVATE
757 Q_DISABLE_COPY(ExtendedCalendar)
758 class MKCAL_HIDE Private;
759 Private *const d;
760 //@endcond
761};
762
763}
764
765#endif
validity dtEnd
Definition: extendedcalendar.cpp:884
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 Mon Sep 13 2021 12:08:02 for libextendedkcal by doxygen 1.9.2