KCalendarCore

incidencebase.h
Go to the documentation of this file.
1 /*
2  This file is part of the kcalcore library.
3 
4  SPDX-FileCopyrightText: 2001-2003 Cornelius Schumacher <[email protected]>
5  SPDX-FileCopyrightText: 2003-2004 Reinhold Kainhofer <[email protected]>
6  SPDX-FileCopyrightText: 2005 Rafal Rzepecki <[email protected]>
7  SPDX-FileCopyrightText: 2009 Nokia Corporation and/or its subsidiary(-ies). All rights reserved.
8  SPDX-FileContributor: Alvaro Manera <[email protected]>
9 
10  SPDX-License-Identifier: LGPL-2.0-or-later
11 */
12 /**
13  @file
14  This file is part of the API for handling calendar data and
15  defines the IncidenceBase class.
16 
17  @author Cornelius Schumacher <[email protected]>
18  @author Reinhold Kainhofer <[email protected]>
19  @author Rafal Rzepecki <[email protected]>
20 
21  @glossary @anchor incidence @b incidence:
22  General term for a calendar component.
23  Examples are events, to-dos, and journals.
24 
25  @glossary @anchor event @b event:
26  An @ref incidence that has a start and end time, typically representing some
27  occurrence of social or personal importance. May be recurring.
28  Examples are appointments, meetings, or holidays.
29 
30  @glossary @anchor to-do @b to-do:
31  An @ref incidence that has an optional start time and an optional due time
32  typically representing some undertaking to be performed. May be recurring.
33  Examples are "fix the bug" or "pay the bills".
34 
35  @glossary @anchor todo @b todo:
36  See @ref to-do.
37 
38  @glossary @anchor journal @b journal:
39  An @ref incidence with a start date that represents a diary or daily record
40  of one's activities. May @b not be recurring.
41 */
42 
43 #ifndef KCALCORE_INCIDENCEBASE_H
44 #define KCALCORE_INCIDENCEBASE_H
45 
46 #include "attendee.h"
47 #include "customproperties.h"
48 #include "duration.h"
49 #include "person.h"
50 
51 #include <QDataStream>
52 #include <QDateTime>
53 #include <QSet>
54 #include <QSharedPointer>
55 #include <QUrl>
56 
57 class QUrl;
58 class QDate;
59 class QTimeZone;
60 
61 namespace KCalendarCore
62 {
63 /** List of dates */
65 
66 /** List of times */
68 
69 class Event;
70 class Todo;
71 class Journal;
72 class FreeBusy;
73 class Visitor;
74 class IncidenceBasePrivate;
75 
76 /**
77  @brief
78  An abstract class that provides a common base for all calendar incidence
79  classes.
80 
81  define: organizer (person)
82  define: uid (same as the attendee uid?)
83 
84  Several properties are not allowed for VFREEBUSY objects (see rfc:2445),
85  so they are not in IncidenceBase. The hierarchy is:
86 
87  IncidenceBase
88  + FreeBusy
89  + Incidence
90  + Event
91  + Todo
92  + Journal
93 
94  So IncidenceBase contains all properties that are common to all classes,
95  and Incidence contains all additional properties that are common to
96  Events, Todos and Journals, but are not allowed for FreeBusy entries.
97 */
98 class KCALENDARCORE_EXPORT IncidenceBase : public CustomProperties
99 {
100  Q_GADGET
101  Q_PROPERTY(QString uid READ uid WRITE setUid)
102  Q_PROPERTY(QDateTime lastModified READ lastModified WRITE setLastModified)
103  Q_PROPERTY(QDateTime dtStart READ dtStart WRITE setDtStart)
104  Q_PROPERTY(bool allDay READ allDay WRITE setAllDay)
105  Q_PROPERTY(KCalendarCore::Person organizer READ organizer WRITE setOrganizer)
106  Q_PROPERTY(QVariantList attendees READ attendeesVariant)
107 
108 public:
109  /**
110  A shared pointer to an IncidenceBase.
111  */
113 
114  /**
115  The different types of incidences, per RFC2445.
116  @see type(), typeStr()
117  */
119  TypeEvent = 0, /**< Type is an event */
120  TypeTodo, /**< Type is a to-do */
121  TypeJournal, /**< Type is a journal */
122  TypeFreeBusy, /**< Type is a free/busy */
123  TypeUnknown, /**< Type unknown */
124  };
125 
126  /**
127  The different types of incidence date/times roles.
128  @see dateTime()
129  */
131  RoleAlarmStartOffset = 0, /**< Role for an incidence alarm's starting offset date/time */
132  RoleAlarmEndOffset, /**< Role for an incidence alarm's ending offset date/time */
133  RoleSort, /**< Role for an incidence's date/time used when sorting */
134  RoleCalendarHashing, /**< Role for looking up an incidence in a Calendar */
135  RoleStartTimeZone, /**< Role for determining an incidence's starting timezone */
136  RoleEndTimeZone, /**< Role for determining an incidence's ending timezone */
137  RoleEndRecurrenceBase,
138  RoleEnd, /**< Role for determining an incidence's dtEnd, will return
139  an invalid QDateTime if the incidence does not support dtEnd */
140  RoleDisplayEnd, /**< Role used for display purposes, represents the end boundary
141  if an incidence supports dtEnd */
142  RoleAlarm, /**< Role for determining the date/time of the first alarm.
143  Returns invalid time if the incidence doesn't have any alarm */
144  RoleRecurrenceStart, /**< Role for determining the start of the recurrence.
145  Currently that's DTSTART for an event and DTDUE for a to-do.
146  (NOTE: If the incidence is a to-do, recurrence should be
147  calculated having DTSTART for a reference, not DT-DUE.
148  This is one place KCalendarCore isn't compliant with RFC2445) */
149  RoleDisplayStart, /**< Role for display purposes, represents the start boundary of an
150  incidence. To-dos return dtDue here, for historical reasons */
151  RoleDnD, /**< Role for determining new start and end dates after a DnD */
152  };
153 
154  /**
155  The different types of incidence fields.
156  */
157  enum Field {
158  FieldDtStart, ///< Field representing the DTSTART component.
159  FieldDtEnd, ///< Field representing the DTEND component.
160  FieldLastModified, ///< Field representing the LAST-MODIFIED component.
161  FieldDescription, ///< Field representing the DESCRIPTION component.
162  FieldSummary, ///< Field representing the SUMMARY component.
163  FieldLocation, ///< Field representing the LOCATION component.
164  FieldCompleted, ///< Field representing the COMPLETED component.
165  FieldPercentComplete, ///< Field representing the PERCENT-COMPLETE component.
166  FieldDtDue, ///< Field representing the DUE component.
167  FieldCategories, ///< Field representing the CATEGORIES component.
168  FieldRelatedTo, ///< Field representing the RELATED-TO component.
169  FieldRecurrence, ///< Field representing the EXDATE, EXRULE, RDATE, and RRULE components.
170  FieldAttachment, ///< Field representing the ATTACH component.
171  FieldSecrecy, ///< Field representing the CLASS component.
172  FieldStatus, ///< Field representing the STATUS component.
173  FieldTransparency, ///< Field representing the TRANSPARENCY component.
174  FieldResources, ///< Field representing the RESOURCES component.
175  FieldPriority, ///< Field representing the PRIORITY component.
176  FieldGeoLatitude, ///< Field representing the latitude part of the GEO component.
177  FieldGeoLongitude, ///< Field representing the longitude part of the GEO component.
178  FieldRecurrenceId, ///< Field representing the RECURRENCE-ID component.
179  FieldAlarms, ///< Field representing the VALARM component.
180  FieldSchedulingId, ///< Field representing the X-KDE-LIBKCAL-ID component.
181  FieldAttendees, ///< Field representing the ATTENDEE component.
182  FieldOrganizer, ///< Field representing the ORGANIZER component.
183  FieldCreated, ///< Field representing the CREATED component.
184  FieldRevision, ///< Field representing the SEQUENCE component.
185  FieldDuration, ///< Field representing the DURATION component.
186  FieldContact, ///< Field representing the CONTACT component.
187  FieldComment, ///< Field representing the COMMENT component.
188  FieldUid, ///< Field representing the UID component.
189  FieldUnknown, ///< Something changed. Always set when you use the assignment operator.
190  FieldUrl, ///< Field representing the URL component.
191  FieldConferences, ///< Field representing the CONFERENCE component.
192  FieldColor, ///< Field representing the COLOR component.
193  };
194 
195  /**
196  The IncidenceObserver class.
197  */
198  class KCALENDARCORE_EXPORT IncidenceObserver
199  {
200  public:
201  /**
202  Destroys the IncidenceObserver.
203  */
204  virtual ~IncidenceObserver();
205 
206  /**
207  The IncidenceObserver interface.
208  This function is called before any changes are made.
209  @param uid is the string containing the incidence @ref uid.
210  @param recurrenceId is possible recurrenceid of incidence.
211  */
212  virtual void incidenceUpdate(const QString &uid, const QDateTime &recurrenceId) = 0;
213 
214  /**
215  The IncidenceObserver interface.
216  This function is called after changes are completed.
217  @param uid is the string containing the incidence @ref uid.
218  @param recurrenceId is possible recurrenceid of incidence.
219  */
220  virtual void incidenceUpdated(const QString &uid, const QDateTime &recurrenceId) = 0;
221  };
222 
223  /**
224  Constructs an empty IncidenceBase.
225  */
226  IncidenceBase();
227 
228  /**
229  Destroys the IncidenceBase.
230  */
231  ~IncidenceBase() override;
232 
233  /**
234  Assignment operator.
235  All data belonging to derived classes are also copied. @see assign().
236  The caller guarantees that both types match.
237 
238  @code
239  if ( i1.type() == i2.type() ) {
240  i1 = i2;
241  } else {
242  qCDebug(KCALCORE_LOG) << "Invalid assignment!";
243  }
244  @endcode
245 
246  Dirty field FieldUnknown will be set.
247 
248  @param other is the IncidenceBase to assign.
249  */
250  IncidenceBase &operator=(const IncidenceBase &other);
251 
252  /**
253  Compares this with IncidenceBase @p ib for equality.
254  All data belonging to derived classes are also compared. @see equals().
255  @param ib is the IncidenceBase to compare against.
256  @return true if the incidences are equal; false otherwise.
257  */
258  bool operator==(const IncidenceBase &ib) const;
259 
260  /**
261  Compares this with IncidenceBase @p ib for inequality.
262  @param ib is the IncidenceBase to compare against.
263  @return true if the incidences are /not/ equal; false otherwise.
264  */
265  bool operator!=(const IncidenceBase &ib) const;
266 
267  /**
268  Accept IncidenceVisitor. A class taking part in the visitor mechanism
269  has to provide this implementation:
270  <pre>
271  bool accept(Visitor &v) { return v.visit(this); }
272  </pre>
273 
274  @param v is a reference to a Visitor object.
275  @param incidence is a valid IncidenceBase object for visiting.
276  */
277  virtual bool accept(Visitor &v, const IncidenceBase::Ptr &incidence);
278 
279  /**
280  Returns the incidence type.
281  */
282  virtual IncidenceType type() const = 0;
283 
284  /**
285  Prints the type of incidence as a string.
286  */
287  virtual QByteArray typeStr() const = 0;
288 
289  /**
290  Sets the unique id for the incidence to @p uid.
291  @param uid is the string containing the incidence @ref uid.
292  @see uid()
293  */
294  void setUid(const QString &uid);
295 
296  /**
297  Returns the unique id (@ref uid) for the incidence.
298  @see setUid()
299  */
300  Q_REQUIRED_RESULT QString uid() const;
301 
302  /**
303  Returns the uri for the incidence, of form urn:x-ical:<uid>
304  */
305  Q_REQUIRED_RESULT QUrl uri() const;
306 
307  /**
308  Sets the time the incidence was last modified to @p lm.
309  It is stored as a UTC date/time.
310 
311  @param lm is the QDateTime when the incidence was last modified.
312 
313  @see lastModified()
314  */
315  virtual void setLastModified(const QDateTime &lm);
316 
317  /**
318  Returns the time the incidence was last modified.
319  @see setLastModified()
320  */
321  Q_REQUIRED_RESULT QDateTime lastModified() const;
322 
323  /**
324  Sets the organizer for the incidence.
325 
326  @param organizer is a non-null Person to use as the incidence @ref organizer.
327  @see organizer(), setOrganizer(const QString &)
328  */
329  void setOrganizer(const Person &organizer);
330 
331  /**
332  Sets the incidence organizer to any string @p organizer.
333 
334  @param organizer is a string to use as the incidence @ref organizer.
335  @see organizer(), setOrganizer(const Person &)
336  */
337  void setOrganizer(const QString &organizer);
338 
339  /**
340  Returns the Person associated with this incidence.
341  If no Person was set through setOrganizer(), a default Person()
342  is returned.
343  @see setOrganizer(const QString &), setOrganizer(const Person &)
344  */
345  Person organizer() const;
346 
347  /**
348  Sets readonly status.
349 
350  @param readOnly if set, the incidence is read-only; else the incidence
351  can be modified.
352  @see isReadOnly().
353  */
354  virtual void setReadOnly(bool readOnly);
355 
356  /**
357  Returns true the object is read-only; false otherwise.
358  @see setReadOnly()
359  */
360  Q_REQUIRED_RESULT bool isReadOnly() const;
361 
362  /**
363  Sets the incidence's starting date/time with a QDateTime.
364 
365  @param dtStart is the incidence start date/time.
366  @see dtStart().
367  */
368  virtual void setDtStart(const QDateTime &dtStart);
369 
370  /**
371  Returns an incidence's starting date/time as a QDateTime.
372  @see setDtStart().
373  */
374  virtual QDateTime dtStart() const;
375 
376  /**
377  Sets the incidence duration.
378 
379  @param duration the incidence duration
380 
381  @see duration()
382  */
383  virtual void setDuration(const Duration &duration);
384 
385  /**
386  Returns the length of the incidence duration.
387  @see setDuration()
388  */
389  Q_REQUIRED_RESULT Duration duration() const;
390 
391  /**
392  Sets if the incidence has a duration.
393  @param hasDuration true if the incidence has a duration; false otherwise.
394  @see hasDuration()
395  */
396  void setHasDuration(bool hasDuration);
397 
398  /**
399  Returns true if the incidence has a duration; false otherwise.
400  @see setHasDuration()
401  */
402  Q_REQUIRED_RESULT bool hasDuration() const;
403 
404  /**
405  Returns true or false depending on whether the incidence is all-day.
406  i.e. has a date but no time attached to it.
407  @see setAllDay()
408  */
409  Q_REQUIRED_RESULT bool allDay() const;
410 
411  /**
412  Sets whether the incidence is all-day, i.e. has a date but no time
413  attached to it.
414 
415  @param allDay sets whether the incidence is all-day.
416 
417  @see allDay()
418  */
419  virtual void setAllDay(bool allDay);
420 
421  /**
422  Shift the times of the incidence so that they appear at the same clock
423  time as before but in a new time zone. The shift is done from a viewing
424  time zone rather than from the actual incidence time zone.
425 
426  For example, shifting an incidence whose start time is 09:00
427  America/New York, using an old viewing time zone (@p oldSpec)
428  of Europe/London, to a new time zone (@p newSpec) of Europe/Paris,
429  will result in the time being shifted from 14:00 (which is the London
430  time of the incidence start) to 14:00 Paris time.
431 
432  @param oldZone the time zone which provides the clock times
433  @param newZone the new time zone
434  */
435  virtual void shiftTimes(const QTimeZone &oldZone, const QTimeZone &newZone);
436 
437  /**
438  Adds a comment to the incidence. Does not add a linefeed character; simply
439  appends the text as specified.
440 
441  @param comment is the QString containing the comment to add.
442  @see removeComment().
443  */
444  void addComment(const QString &comment);
445 
446  /**
447  Removes a comment from the incidence. Removes the first comment whose
448  string is an exact match for the specified string in @p comment.
449 
450  @param comment is the QString containing the comment to remove.
451  @return true if match found, false otherwise.
452  @see addComment().
453  */
454  Q_REQUIRED_RESULT bool removeComment(const QString &comment);
455 
456  /**
457  Deletes all incidence comments.
458  */
459  void clearComments();
460 
461  /**
462  Returns all incidence comments as a list of strings.
463  */
464  Q_REQUIRED_RESULT QStringList comments() const;
465 
466  /**
467  Adds a contact to thieincidence. Does not add a linefeed character; simply
468  appends the text as specified.
469 
470  @param contact is the QString containing the contact to add.
471  @see removeContact().
472  */
473  void addContact(const QString &contact);
474 
475  /**
476  Removes a contact from the incidence. Removes the first contact whose
477  string is an exact match for the specified string in @p contact.
478 
479  @param contact is the QString containing the contact to remove.
480  @return true if match found, false otherwise.
481  @see addContact().
482  */
483  Q_REQUIRED_RESULT bool removeContact(const QString &contact);
484 
485  /**
486  Deletes all incidence contacts.
487  */
488  void clearContacts();
489 
490  /**
491  Returns all incidence contacts as a list of strings.
492  */
493  Q_REQUIRED_RESULT QStringList contacts() const;
494 
495  /**
496  Add Attendee to this incidence.
497 
498  @param attendee the attendee to add
499  @param doUpdate If true the Observers are notified, if false they are not.
500  */
501  void addAttendee(const Attendee &attendee, bool doUpdate = true);
502 
503  /**
504  Removes all attendees from the incidence.
505  */
506  void clearAttendees();
507 
508  /**
509  Set the attendees of this incidence.
510  This replaces all previously set attendees, unlike addAttendee.
511 
512  @param attendees A list of attendees.
513  @param doUpdate If true the Observers are notified, if false they are not.
514  */
515  void setAttendees(const Attendee::List &attendees, bool doUpdate = true);
516 
517  /**
518  Returns a list of incidence attendees.
519  All pointers in the list are valid.
520  */
521  Q_REQUIRED_RESULT Attendee::List attendees() const;
522 
523  /**
524  Returns the number of incidence attendees.
525  */
526  Q_REQUIRED_RESULT int attendeeCount() const;
527 
528  /**
529  Returns the attendee with the specified email address.
530 
531  @param email is a QString containing an email address of the
532  form "FirstName LastName <emailaddress>".
533  @see attendeeByMails(), attendeesByUid().
534  */
535  Attendee attendeeByMail(const QString &email) const;
536 
537  /**
538  Returns the first incidence attendee with one of the specified
539  email addresses.
540 
541  @param emails is a list of QStrings containing email addresses of the
542  form "FirstName LastName <emailaddress>".
543  @param email is a QString containing a single email address to search
544  in addition to the list specified in @p emails.
545  @see attendeeByMail(), attendeesByUid().
546  */
547  Attendee attendeeByMails(const QStringList &emails, const QString &email = QString()) const;
548 
549  /**
550  Returns the incidence attendee with the specified attendee @acronym UID.
551 
552  @param uid is a QString containing an attendee @acronym UID.
553  @see attendeeByMail(), attendeeByMails().
554  */
555  Attendee attendeeByUid(const QString &uid) const;
556 
557  /**
558  Sets the incidences url.
559 
560  This property can be used to point to a more dynamic rendition of the incidence.
561  I.e. a website related to the incidence.
562 
563  @param url of the incience.
564  @see url()
565  @since 4.12
566  */
567  void setUrl(const QUrl &url);
568 
569  /**
570  Returns the url.
571  @return incidences url value
572  @see setUrl()
573  @since 4.12
574  */
575  Q_REQUIRED_RESULT QUrl url() const;
576 
577  /**
578  Register observer. The observer is notified when the observed object
579  changes.
580 
581  @param observer is a pointer to an IncidenceObserver object that will be
582  watching this incidence.
583  @see unRegisterObserver()
584  */
585  void registerObserver(IncidenceObserver *observer);
586 
587  /**
588  Unregister observer. It isn't notified anymore about changes.
589 
590  @param observer is a pointer to an IncidenceObserver object that will be
591  watching this incidence.
592  @see registerObserver().
593  */
594  void unRegisterObserver(IncidenceObserver *observer);
595 
596  /**
597  Call this to notify the observers after the IncidenceBase object will be
598  changed.
599  */
600  void update();
601 
602  /**
603  Call this to notify the observers after the IncidenceBase object has
604  changed.
605  */
606  void updated();
607 
608  /**
609  Call this when a group of updates is going to be made. This suppresses
610  change notifications until endUpdates() is called, at which point
611  updated() will automatically be called.
612  */
613  void startUpdates();
614 
615  /**
616  Call this when a group of updates is complete, to notify observers that
617  the instance has changed. This should be called in conjunction with
618  startUpdates().
619  */
620  void endUpdates();
621 
622  /**
623  Returns a date/time corresponding to the specified DateTimeRole.
624  @param role is a DateTimeRole.
625  */
626  virtual QDateTime dateTime(DateTimeRole role) const = 0;
627 
628  /**
629  Sets the date/time corresponding to the specified DateTimeRole.
630  @param dateTime is QDateTime value to set.
631  @param role is a DateTimeRole.
632  */
633  virtual void setDateTime(const QDateTime &dateTime, DateTimeRole role) = 0;
634 
635  /**
636  Returns the Akonadi specific sub MIME type of a KCalendarCore::IncidenceBase item,
637  e.g. getting "application/x-vnd.akonadi.calendar.event" for a KCalendarCore::Event.
638  */
639  virtual QLatin1String mimeType() const = 0;
640 
641  /**
642  Returns the incidence recurrenceId.
643  @return incidences recurrenceId value
644  @see setRecurrenceId().
645  */
646  virtual QDateTime recurrenceId() const;
647 
648  /**
649  Returns a QSet with all Fields that were changed since the incidence was created
650  or resetDirtyFields() was called.
651 
652  @see resetDirtyFields()
653  */
654  QSet<IncidenceBase::Field> dirtyFields() const;
655 
656  /**
657  Sets which fields are dirty.
658  @see dirtyFields()
659  @since 4.8
660  */
661  void setDirtyFields(const QSet<IncidenceBase::Field> &);
662 
663  /**
664  Resets dirty fields.
665  @see dirtyFields()
666  */
667  void resetDirtyFields();
668 
669  /**
670  * Constant that identifies KCalendarCore data in a binary stream.
671  *
672  * @since 4.12
673  */
674  Q_REQUIRED_RESULT static quint32 magicSerializationIdentifier();
675 
676 protected:
677  /**
678  Marks Field @p field as dirty.
679  @param field is the Field type to mark as dirty.
680  @see dirtyFields()
681  */
682  void setFieldDirty(IncidenceBase::Field field);
683 
684  /**
685  @copydoc
686  CustomProperties::customPropertyUpdate()
687  */
688  void customPropertyUpdate() override;
689 
690  /**
691  @copydoc
692  CustomProperties::customPropertyUpdated()
693  */
694  void customPropertyUpdated() override;
695 
696  /**
697  Constructs an IncidenceBase as a copy of another IncidenceBase object.
698  @param ib is the IncidenceBase to copy.
699  */
700  IncidenceBase(const IncidenceBase &ib);
701 
702  /**
703  Provides polymorfic comparison for equality.
704  Only called by IncidenceBase::operator==() which guarantees that
705  @p incidenceBase is of the right type.
706  @param incidenceBase is the IncidenceBase to compare against.
707  @return true if the incidences are equal; false otherwise.
708  */
709  virtual bool equals(const IncidenceBase &incidenceBase) const;
710 
711  /**
712  Provides polymorfic assignment.
713  @param other is the IncidenceBase to assign.
714  */
715  virtual IncidenceBase &assign(const IncidenceBase &other);
716 
717  /**
718  * Sub-type specific serialization.
719  */
720  virtual void serialize(QDataStream &out) const;
721  /**
722  * Sub-type specific deserialization.
723  */
724  virtual void deserialize(QDataStream &in);
725 
726  enum VirtualHook {};
727 
728  /**
729  Standard trick to add virtuals later.
730 
731  @param id is any integer unique to this class which we will use to identify the method
732  to be called.
733  @param data is a pointer to some glob of data, typically a struct.
734  */
735  virtual void virtual_hook(VirtualHook id, void *data) = 0;
736 
737  /**
738  Identifies a read-only incidence.
739  */
740  bool mReadOnly;
741 
742 private:
743  //@cond PRIVATE
744  IncidenceBasePrivate *const d;
745 
746  Q_DECL_HIDDEN QVariantList attendeesVariant() const;
747  //@endcond
748 
749  friend KCALENDARCORE_EXPORT QDataStream &operator<<(QDataStream &stream, const KCalendarCore::IncidenceBase::Ptr &);
750 
751  friend KCALENDARCORE_EXPORT QDataStream &operator>>(QDataStream &stream, KCalendarCore::IncidenceBase::Ptr &);
752 };
753 
754 /**
755  * Incidence serializer.
756  *
757  * @since 4.12
758  */
759 KCALENDARCORE_EXPORT QDataStream &operator<<(QDataStream &out, const KCalendarCore::IncidenceBase::Ptr &);
760 
761 /**
762  * Incidence deserializer.
763  *
764  * @since 4.12
765  */
767 }
768 
769 Q_DECLARE_METATYPE(KCalendarCore::IncidenceBase *)
770 Q_DECLARE_METATYPE(KCalendarCore::IncidenceBase::Ptr)
771 
772 #endif
KCALENDARCORE_EXPORT QDataStream & operator<<(QDataStream &out, const KCalendarCore::Alarm::Ptr &)
Alarm serializer.
Definition: alarm.cpp:820
This file is part of the API for handling calendar data and defines the Attendee class.
Field representing the CREATED component.
Role for determining new start and end dates after a DnD.
A class to manage custom calendar properties.
This class provides the interface for a visitor of calendar components.
Definition: visitor.h:30
This file is part of the API for handling calendar data and defines the CustomProperties class...
Represents a person, by name and email address.
Definition: person.h:37
Field representing the COMPLETED component.
Represents information related to an attendee of an Calendar Incidence, typically a meeting or task (...
Definition: attendee.h:44
Provides a Journal in the sense of RFC2445.
Definition: journal.h:32
Field representing the URL component.
KCALENDARCORE_EXPORT QDataStream & operator>>(QDataStream &in, const KCalendarCore::Alarm::Ptr &)
Alarm deserializer.
Definition: alarm.cpp:833
Provides information about the free/busy time of a calendar.
Definition: freebusy.h:42
Field representing the EXDATE, EXRULE, RDATE, and RRULE components.
Field
The different types of incidence fields.
Field representing the PRIORITY component.
Field representing the STATUS component.
Field representing the RECURRENCE-ID component.
DateTimeRole
The different types of incidence date/times roles.
Field representing the TRANSPARENCY component.
An abstract class that provides a common base for all calendar incidence classes. ...
Definition: incidencebase.h:98
Role for an incidence&#39;s date/time used when sorting.
This file is part of the API for handling calendar data and defines the Person class.
Field representing the X-KDE-LIBKCAL-ID component.
Represents a span of time measured in seconds or days.
Definition: duration.h:43
Role for determining an incidence&#39;s starting timezone.
Field representing the CATEGORIES component.
Role for determining an incidence&#39;s ending timezone.
This class provides an Event in the sense of RFC2445.
Definition: event.h:32
Field representing the PERCENT-COMPLETE component.
Role for looking up an incidence in a Calendar.
Something changed. Always set when you use the assignment operator.
Provides a To-do in the sense of RFC2445.
Definition: todo.h:33
IncidenceType
The different types of incidences, per RFC2445.
Field representing the DUE component.
Field representing the RESOURCES component.
Field representing the CONTACT component.
Field representing the longitude part of the GEO component.
Field representing the ORGANIZER component.
Field representing the DTEND component.
Field representing the ATTENDEE component.
Field representing the COMMENT component.
QSharedPointer< IncidenceBase > Ptr
A shared pointer to an IncidenceBase.
Field representing the DTSTART component.
Field representing the UID component.
This file is part of the API for handling calendar data and defines the Duration class.
Field representing the LOCATION component.
Field representing the COLOR component.
Field representing the ATTACH component.
Field representing the RELATED-TO component.
Field representing the DESCRIPTION component.
Field representing the latitude part of the GEO component.
Field representing the VALARM component.
Field representing the CLASS component.
QList< QDate > DateList
List of dates.
Definition: incidencebase.h:64
Field representing the SEQUENCE component.
Field representing the DURATION component.
Field representing the CONFERENCE component.
Field representing the LAST-MODIFIED component.
Field representing the SUMMARY component.
Namespace for all KCalendarCore types.
Definition: alarm.h:36
Role for an incidence alarm&#39;s ending offset date/time.
QList< QDateTime > DateTimeList
List of times.
Definition: incidencebase.h:67
bool mReadOnly
Identifies a read-only incidence.
This file is part of the KDE documentation.
Documentation copyright © 1996-2021 The KDE developers.
Generated on Thu Oct 21 2021 22:52:53 by doxygen 1.8.11 written by Dimitri van Heesch, © 1997-2006

KDE's Doxygen guidelines are available online.