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
199namespace mKCal {
200
201class ExtendedStorage;
202class Notebook;
203
208class MKCAL_EXPORT ExtendedCalendar : public KCalendarCore::MemoryCalendar
209{
210public:
215 enum IncidenceSortField {
216 IncidenceSortUnsorted,
217 IncidenceSortDate,
221 IncidenceSortCreated /* < Sort Incidences based on creation time */
222 };
223
227 typedef QSharedPointer<ExtendedCalendar> Ptr;
228
233 explicit ExtendedCalendar(const QTimeZone &timeZone);
234
239 explicit ExtendedCalendar(const QByteArray &timeZoneId);
240
245 ~ExtendedCalendar();
246
251 bool reload();
252
257 bool save();
258
263 void close();
264
273 /* KCalendarCore::ICalTimeZone parseZone(KCalendarCore::MSTimeZone *tz); */
274
285 KCalendarCore::Incidence::Ptr dissociateSingleOccurrence(const KCalendarCore::Incidence::Ptr &incidence,
286 const QDateTime &dateTime);
287
292 bool addIncidence(const KCalendarCore::Incidence::Ptr &incidence);
293
303 bool addIncidence(const KCalendarCore::Incidence::Ptr &incidence, const QString &notebookUid);
304
309 bool deleteIncidence(const KCalendarCore::Incidence::Ptr &incidence);
310
311 // Event Specific Methods //
312
317 bool addEvent(const KCalendarCore::Event::Ptr &event);
318
328 bool addEvent(const KCalendarCore::Event::Ptr &event, const QString &notebookUid);
329
338 bool deleteEvent(const KCalendarCore::Event::Ptr &event);
339
344 QDate nextEventsDate(const QDate &, const QTimeZone &timespec = QTimeZone());
345
350 QDate previousEventsDate(const QDate &, const QTimeZone &timespec = QTimeZone());
351
352
353 // To-do Specific Methods //
354
359 bool addTodo(const KCalendarCore::Todo::Ptr &todo);
360
370 bool addTodo(const KCalendarCore::Todo::Ptr &todo, const QString &notebookUid);
371
379 bool deleteTodo(const KCalendarCore::Todo::Ptr &todo);
380
381 // Journal Specific Methods //
382
387 bool addJournal(const KCalendarCore::Journal::Ptr &journal);
388
398 bool addJournal(const KCalendarCore::Journal::Ptr &journal, const QString &notebookUid);
399
407 bool deleteJournal(const KCalendarCore::Journal::Ptr &journal);
408
409 using KCalendarCore::Calendar::rawJournals;
423 KCalendarCore::Journal::List rawJournals(
424 const QDate &start, const QDate &end,
425 const QTimeZone &timespec = QTimeZone(),
426 bool inclusive = false) const;
427
433 void incidenceUpdate(const QString &uid, const QDateTime &recurrenceId);
434
440 void incidenceUpdated(const QString &uid, const QDateTime &recurrenceId);
441
442 // Incidence Specific Methods, also see Calendar.h for more //
443
450 QStringList attendees();
451
458 KCalendarCore::Incidence::List attendeeIncidences(const QString &email);
459
465 KCalendarCore::Incidence::List geoIncidences();
466
476 KCalendarCore::Incidence::List geoIncidences(float geoLatitude, float geoLongitude,
477 float diffLatitude, float diffLongitude);
478
487 virtual KCalendarCore::Incidence::List incidences(const QDate &date,
488 const QList<KCalendarCore::Incidence::IncidenceType> &types);
489
494 void deleteAllIncidences();
495
505 static KCalendarCore::Incidence::List sortIncidences(
506 KCalendarCore::Incidence::List *list,
507 IncidenceSortField sortField = IncidenceSortDate,
508 KCalendarCore::SortDirection sortDirection = KCalendarCore::SortDirectionAscending);
509
515 typedef struct ExpandedIncidenceValidity {
516 QDateTime dtStart;
517 QDateTime dtEnd;
518 } ExpandedIncidenceValidity;
519
526 typedef QPair<ExpandedIncidenceValidity, KCalendarCore::Incidence::Ptr> ExpandedIncidence;
527
531 typedef QVector<ExpandedIncidence> ExpandedIncidenceList;
532 typedef QVectorIterator<ExpandedIncidence> ExpandedIncidenceIterator;
533
551 ExpandedIncidenceList expandRecurrences(KCalendarCore::Incidence::List *list,
552 const QDateTime &start,
553 const QDateTime &end,
554 int maxExpand = 1000,
555 bool *expandLimitHit = 0);
556
581 ExpandedIncidenceList expandMultiDay(const ExpandedIncidenceList &list,
582 const QDate &startDate,
583 const QDate &endDate,
584 int maxExpand = 1000,
585 bool merge = true,
586 bool *expandLimitHit = 0);
587
588 using KCalendarCore::Calendar::incidences;
589
599 KCalendarCore::Incidence::List incidences(const QDate &start, const QDate &end);
600
610 static QSharedPointer<ExtendedStorage> defaultStorage(const ExtendedCalendar::Ptr
611 &calendar); //No typedef to avoid cyclic includes
612
613 // Smart Loading Methods, see ExtendedStorage.h for more //
614
623 KCalendarCore::Todo::List uncompletedTodos(bool hasDate, int hasGeo);
624
634 KCalendarCore::Todo::List completedTodos(bool hasDate, int hasGeo,
635 const QDateTime &start, const QDateTime &end);
636
645 KCalendarCore::Incidence::List incidences(bool hasDate, const QDateTime &start,
646 const QDateTime &end);
647
656 KCalendarCore::Incidence::List geoIncidences(bool hasDate, const QDateTime &start,
657 const QDateTime &end);
658
666 KCalendarCore::Incidence::List unreadInvitationIncidences(
667 const KCalendarCore::Person &person = KCalendarCore::Person());
668
677 KCalendarCore::Incidence::List oldInvitationIncidences(const QDateTime &start,
678 const QDateTime &end);
679
689 KCalendarCore::Incidence::List contactIncidences(const KCalendarCore::Person &person,
690 const QDateTime &start, const QDateTime &end);
691
692 using KCalendarCore::Calendar::journals;
693
701 KCalendarCore::Journal::List journals(const QDate &start, const QDate &end);
702
714 KCalendarCore::Incidence::List addIncidences(KCalendarCore::Incidence::List *list,
715 const QString &notebookUid,
716 bool duplicateRemovalEnabled = true);
717
724 int eventCount(const QString &notebookUid = QString());
725
732 int todoCount(const QString &notebookUid = QString());
733
740 int journalCount(const QString &notebookUid = QString());
741
742private:
743 //@cond PRIVATE
744 Q_DISABLE_COPY(ExtendedCalendar)
745 class MKCAL_HIDE Private;
746 Private *const d;
747 //@endcond
748};
749
750}
751
752#endif
#define MKCAL_EXPORT
Definition mkcal_export.h:27
#define MKCAL_HIDE
Definition mkcal_export.h:31
Definition extendedstorage.h:49

Generated on Sat Oct 7 2023 19:21:53 for libextendedkcal by doxygen 1.12.0