diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index 07707fd76..4e037fedd 100644 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -1,122 +1,121 @@ ########### next target ############### set(kcalcore_LIB_SRCS alarm.cpp attachment.cpp attendee.cpp calendar.cpp calfilter.cpp calformat.cpp calstorage.cpp compat.cpp customproperties.cpp duration.cpp event.cpp exceptions.cpp filestorage.cpp freebusy.cpp freebusycache.cpp freebusyperiod.cpp icalformat.cpp icalformat_p.cpp icaltimezones.cpp incidence.cpp incidencebase.cpp journal.cpp memorycalendar.cpp occurrenceiterator.cpp period.cpp person.cpp recurrence.cpp recurrencerule.cpp schedulemessage.cpp sorting.cpp todo.cpp utils.cpp vcalformat.cpp visitor.cpp ) ecm_qt_declare_logging_category(kcalcore_LIB_SRCS HEADER kcalcore_debug.h IDENTIFIER KCALCORE_LOG CATEGORY_NAME org.kde.pim.kcalcore) add_library(KF5CalendarCore ${kcalcore_LIB_SRCS}) generate_export_header(KF5CalendarCore BASE_NAME kcalcore) add_library(KF5::CalendarCore ALIAS KF5CalendarCore) target_include_directories(KF5CalendarCore INTERFACE "$") target_include_directories(KF5CalendarCore PUBLIC "$") target_link_libraries(KF5CalendarCore PUBLIC Qt5::Core PRIVATE Qt5::Gui LibIcal ) set_target_properties(KF5CalendarCore PROPERTIES VERSION ${KCALCORE_VERSION_STRING} SOVERSION ${KCALCORE_SOVERSION} EXPORT_NAME CalendarCore ) install(TARGETS KF5CalendarCore EXPORT KF5CalendarCoreTargets ${KF5_INSTALL_TARGETS_DEFAULT_ARGS}) ########### Generate Headers ############### ecm_generate_headers(KCalCore_CamelCase_HEADERS HEADER_NAMES Alarm Attachment Attendee CalFilter CalFormat CalStorage Calendar CustomProperties Duration Event Exceptions # NOTE: Used to be called 'Exception' in KDE4 FileStorage FreeBusy FreeBusyCache FreeBusyPeriod ICalFormat Incidence IncidenceBase Journal MemoryCalendar OccurrenceIterator Period Person Recurrence RecurrenceRule ScheduleMessage Sorting Todo VCalFormat Visitor PREFIX KCalCore REQUIRED_HEADERS KCalCore_HEADERS ) ########### install files ############### install(FILES ${CMAKE_CURRENT_BINARY_DIR}/kcalcore_export.h ${KCalCore_HEADERS} - supertrait.h DESTINATION ${KDE_INSTALL_INCLUDEDIR_KF5}/KCalCore/kcalcore COMPONENT Devel ) install(FILES ${KCalCore_CamelCase_HEADERS} DESTINATION ${KDE_INSTALL_INCLUDEDIR_KF5}/KCalCore/KCalCore COMPONENT Devel ) ecm_generate_pri_file(BASE_NAME KCalCore LIB_NAME KF5CalendarCore DEPS "Core" FILENAME_VAR PRI_FILENAME INCLUDE_INSTALL_DIR ${KDE_INSTALL_INCLUDEDIR_KF5}/KCalCore/KCalCore) install(FILES ${PRI_FILENAME} DESTINATION ${ECM_MKSPECS_INSTALL_DIR}) diff --git a/src/event.h b/src/event.h index 0aa302ab1..2e6fb8743 100644 --- a/src/event.h +++ b/src/event.h @@ -1,285 +1,281 @@ /* This file is part of the kcalcore library. Copyright (c) 2001-2003 Cornelius Schumacher This library is free software; you can redistribute it and/or modify it under the terms of the GNU Library General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Library General Public License for more details. You should have received a copy of the GNU Library General Public License along with this library; see the file COPYING.LIB. If not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */ /** @file This file is part of the API for handling calendar data and defines the Event class. @author Cornelius Schumacher \ */ #ifndef KCALCORE_EVENT_H #define KCALCORE_EVENT_H #include "kcalcore_export.h" #include "incidence.h" -#include "supertrait.h" #include namespace KCalCore { /** @brief This class provides an Event in the sense of RFC2445. */ class KCALCORE_EXPORT Event : public Incidence { Q_GADGET Q_PROPERTY(QDateTime dtEnd READ dtEnd WRITE setDtEnd) Q_PROPERTY(KCalCore::Event::Transparency transparency READ transparency WRITE setTransparency) public: /** The different Event transparency types. */ enum Transparency { Opaque, /**< Event appears in free/busy time */ Transparent /**< Event does @b not appear in free/busy time */ }; Q_ENUM(Transparency) /** A shared pointer to an Event object. */ typedef QSharedPointer Ptr; /** List of events. */ typedef QVector List; + ///@cond PRIVATE + // needed for Akonadi polymorphic payload support + typedef Incidence SuperClass; + ///@endcond + /** Constructs an event. */ Event(); /** Copy constructor. @param other is the event to copy. */ Event(const Event &other); /** Costructs an event out of an incidence This constructs allows to make it easy to create an event from a todo. @param other is the incidence to copy. @since 4.14 */ Event(const Incidence &other); //krazy:exclude=explicit (copy ctor) /** Destroys the event. */ ~Event() override; /** @copydoc IncidenceBase::type() */ Q_REQUIRED_RESULT IncidenceType type() const override; /** @copydoc IncidenceBase::typeStr() */ Q_REQUIRED_RESULT QByteArray typeStr() const override; /** Returns an exact copy of this Event. The caller owns the returned object. */ Event *clone() const override; /** Sets the incidence starting date/time. @param dt is the starting date/time. @see IncidenceBase::dtStart(). */ void setDtStart(const QDateTime &dt) override; /** Sets the event end date and time. Important note for all day events: the end date is inclusive, the event will still occur during dtEnd(). When serializing to iCalendar DTEND will be dtEnd()+1, because the RFC states that DTEND is exclusive. @param dtEnd is a QDateTime specifying when the event ends. @see dtEnd(), dateEnd(). */ void setDtEnd(const QDateTime &dtEnd); /** Returns the event end date and time. Important note for all day events: the returned end date is inclusive, the event will still occur during dtEnd(). When serializing to iCalendar DTEND will be dtEnd()+1, because the RFC states that DTEND is exclusive. @see setDtEnd(). */ virtual QDateTime dtEnd() const; /** Returns the date when the event ends. This might be different from dtEnd().date, since the end date/time is non-inclusive. So timed events ending at 0:00 have their end date on the day before. */ Q_REQUIRED_RESULT QDate dateEnd() const; /** Returns whether the event has an end date/time. */ Q_REQUIRED_RESULT bool hasEndDate() const; /** Returns true if the event spans multiple days, otherwise return false. For recurring events, it returns true if the first occurrence spans multiple days, otherwise returns false. Other occurrences might have a different span due to day light savings changes. @param zone If set, looks if the event is multiday for the given zone. If not set, looks if event this multiday for its zone. */ Q_REQUIRED_RESULT bool isMultiDay(const QTimeZone &zone = {}) const; /** @copydoc IncidenceBase::shiftTimes() */ void shiftTimes(const QTimeZone &oldZone, const QTimeZone &newZone) override; /** Sets the event's time transparency level. @param transparency is the event Transparency level. */ void setTransparency(Transparency transparency); /** Returns the event's time transparency level. */ Q_REQUIRED_RESULT Transparency transparency() const; /** Sets the duration of this event. @param duration is the event Duration. */ void setDuration(const Duration &duration) override; /** @copydoc IncidenceBase::setAllDay(). */ void setAllDay(bool allDay) override; /** @copydoc IncidenceBase::dateTime() */ Q_REQUIRED_RESULT QDateTime dateTime(DateTimeRole role) const override; /** @copydoc IncidenceBase::setDateTime() */ void setDateTime(const QDateTime &dateTime, DateTimeRole role) override; /** @copydoc IncidenceBase::mimeType() */ Q_REQUIRED_RESULT QLatin1String mimeType() const override; /** @copydoc Incidence::iconName() */ Q_REQUIRED_RESULT QLatin1String iconName(const QDateTime &recurrenceId = {}) const override; /** @copydoc Incidence::supportsGroupwareCommunication() */ Q_REQUIRED_RESULT bool supportsGroupwareCommunication() const override; /** Returns the Akonadi specific sub MIME type of a KCalCore::Event. */ Q_REQUIRED_RESULT static QLatin1String eventMimeType(); protected: /** Compares two events for equality. @param event is the event to compare. */ bool equals(const IncidenceBase &event) const override; /** @copydoc IncidenceBase::assign() */ IncidenceBase &assign(const IncidenceBase &other) override; /** @copydoc IncidenceBase::virtual_hook() */ void virtual_hook(VirtualHook id, void *data) override; private: /** @copydoc IncidenceBase::accept() */ bool accept(Visitor &v, const IncidenceBase::Ptr &incidence) override; /** Disabled, otherwise could be dangerous if you subclass Event. Use IncidenceBase::operator= which is safe because it calls virtual function assign(). @param other is another Event object to assign to this one. */ Event &operator=(const Event &other); // For polymorfic serialization void serialize(QDataStream &out); void deserialize(QDataStream &in); //@cond PRIVATE class Private; Private *const d; //@endcond }; } // namespace KCalCore //@cond PRIVATE Q_DECLARE_TYPEINFO(KCalCore::Event::Ptr, Q_MOVABLE_TYPE); Q_DECLARE_METATYPE(KCalCore::Event::Ptr) Q_DECLARE_METATYPE(KCalCore::Event *) //@endcond -//@cond PRIVATE -namespace Akonadi -{ -// super class trait specialization -template <> struct SuperClass : public SuperClassTrait {}; -} -//@endcond - #endif diff --git a/src/journal.h b/src/journal.h index 580844422..6dabebf24 100644 --- a/src/journal.h +++ b/src/journal.h @@ -1,181 +1,177 @@ /* This file is part of the kcalcore library. Copyright (c) 2001-2003 Cornelius Schumacher Copyright (C) 2003-2004 Reinhold Kainhofer This library is free software; you can redistribute it and/or modify it under the terms of the GNU Library General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Library General Public License for more details. You should have received a copy of the GNU Library General Public License along with this library; see the file COPYING.LIB. If not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */ /** @file This file is part of the API for handling calendar data and defines the Journal class. @author Cornelius Schumacher \ @author Reinhold Kainhofer \ */ #ifndef KCALCORE_JOURNAL_H #define KCALCORE_JOURNAL_H #include "kcalcore_export.h" #include "incidence.h" -#include "supertrait.h" namespace KCalCore { /** @brief Provides a Journal in the sense of RFC2445. */ class KCALCORE_EXPORT Journal : public Incidence { public: /** A shared pointer to a Journal object. */ typedef QSharedPointer Ptr; /** List of journals. */ typedef QVector List; + ///@cond PRIVATE + // needed for Akonadi polymorphic payload support + typedef Incidence SuperClass; + ///@endcond + /** Constructs an empty journal. */ Journal(); /** Destroys a journal. */ ~Journal() override; /** @copydoc IncidenceBase::type() */ Q_REQUIRED_RESULT IncidenceType type() const override; /** @copydoc IncidenceBase::typeStr() */ Q_REQUIRED_RESULT QByteArray typeStr() const override; /** Returns an exact copy of this journal. The returned object is owned by the caller. */ Journal *clone() const override; /** @copydoc IncidenceBase::dateTime(DateTimeRole)const */ Q_REQUIRED_RESULT QDateTime dateTime(DateTimeRole role) const override; /** @copydoc IncidenceBase::setDateTime(const QDateTime &, DateTimeRole ) */ void setDateTime(const QDateTime &dateTime, DateTimeRole role) override; /** @copydoc IncidenceBase::mimeType() */ Q_REQUIRED_RESULT QLatin1String mimeType() const override; /** @copydoc Incidence::iconName() */ Q_REQUIRED_RESULT QLatin1String iconName(const QDateTime &recurrenceId = {}) const override; /** @copydoc Incidence::supportsGroupwareCommunication() */ Q_REQUIRED_RESULT bool supportsGroupwareCommunication() const override; /** Returns the Akonadi specific sub MIME type of a KCalCore::Journal. */ Q_REQUIRED_RESULT static QLatin1String journalMimeType(); protected: /** Compare this with @p journal for equality. @param journal is the journal to compare. */ bool equals(const IncidenceBase &journal) const override; /** @copydoc IncidenceBase::assign() */ IncidenceBase &assign(const IncidenceBase &other) override; /** @copydoc IncidenceBase::virtual_hook() */ void virtual_hook(VirtualHook id, void *data) override; private: /** @copydoc IncidenceBase::accept(Visitor &, const IncidenceBase::Ptr &) */ bool accept(Visitor &v, const IncidenceBase::Ptr &incidence) override; /** Disabled, otherwise could be dangerous if you subclass Journal. Use IncidenceBase::operator= which is safe because it calls virtual function assign(). @param other is another Journal object to assign to this one. */ Journal &operator=(const Journal &other); // For polymorfic serialization void serialize(QDataStream &out); void deserialize(QDataStream &in); //@cond PRIVATE class Private; Private *const d; //@endcond }; } // namespace KCalCore //@cond PRIVATE Q_DECLARE_TYPEINFO(KCalCore::Journal::Ptr, Q_MOVABLE_TYPE); Q_DECLARE_METATYPE(KCalCore::Journal::Ptr) Q_DECLARE_METATYPE(KCalCore::Journal *) //@endcond -//@cond PRIVATE -namespace Akonadi -{ -// super class trait specialization -template <> struct SuperClass : public SuperClassTrait {}; -} -//@endcond - #endif diff --git a/src/supertrait.h b/src/supertrait.h deleted file mode 100644 index 4022be746..000000000 --- a/src/supertrait.h +++ /dev/null @@ -1,55 +0,0 @@ -/* - Copyright (c) 2009 Volker Krause - - This library is free software; you can redistribute it and/or modify it - under the terms of the GNU Library General Public License as published by - the Free Software Foundation; either version 2 of the License, or (at your - option) any later version. - - This library is distributed in the hope that it will be useful, but WITHOUT - ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or - FITNESS FOR A PARTICULAR PURPOSE. See the GNU Library General Public - License for more details. - - You should have received a copy of the GNU Library General Public License - along with this library; see the file COPYING.LIB. If not, write to the - Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA - 02110-1301, USA. -*/ - -#ifndef AKONADI_SUPERTRAIT_H -#define AKONADI_SUPERTRAIT_H - -// NOTE: This header is a copy of akonadi/src/core/supertrait.h because we can't -// depend on Akonadi -// DO NOT change include guards or namespace. - -//@cond PRIVATE -namespace Akonadi -{ -/** - @internal - @see super_class -*/ -template -struct SuperClassTrait { - typedef Super Type; -}; - -/** - Type trait to provide information about a base class for a given class. - Used eg. for the Akonadi payload mechanism. - - To provide base class introspection for own types, extend this trait as follows: - @code - namespace Akonadi - { - template <> struct SuperClass : public SuperClassTrait{}; - } - @endcode -*/ -template struct SuperClass : public SuperClassTrait {}; -} -//@endcond - -#endif diff --git a/src/todo.h b/src/todo.h index 004362599..20e475243 100644 --- a/src/todo.h +++ b/src/todo.h @@ -1,369 +1,367 @@ /* This file is part of the kcalcore library. Copyright (c) 2001-2003 Cornelius Schumacher Copyright (C) 2009 Allen Winter This library is free software; you can redistribute it and/or modify it under the terms of the GNU Library General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Library General Public License for more details. You should have received a copy of the GNU Library General Public License along with this library; see the file COPYING.LIB. If not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */ /** @file This file is part of the API for handling calendar data and defines the Todo class. @author Cornelius Schumacher \ @author Allen Winter \ */ #ifndef KCALCORE_TODO_H #define KCALCORE_TODO_H #include "kcalcore_export.h" #include "incidence.h" -#include "supertrait.h" namespace KCalCore { /** @brief Provides a To-do in the sense of RFC2445. */ class KCALCORE_EXPORT Todo : public Incidence { public: /** A shared pointer to a Todo object. */ typedef QSharedPointer Ptr; /** List of to-dos. */ typedef QVector List; + ///@cond PRIVATE + // needed for Akonadi polymorphic payload support + typedef Incidence SuperClass; + ///@endcond + /** Constructs an empty to-do. */ Todo(); /** Copy constructor. @param other is the to-do to copy. */ Todo(const Todo &other); /** Costructs a todo out of an incidence This constructs allows to make it easy to create a todo from an event. @param other is the incidence to copy. @since 4.14 */ Todo(const Incidence &other); //krazy:exclude=explicit (copy ctor) /** Destroys a to-do. */ ~Todo() override; /** @copydoc IncidenceBase::type() */ Q_REQUIRED_RESULT IncidenceType type() const override; /** @copydoc IncidenceBase::typeStr() */ Q_REQUIRED_RESULT QByteArray typeStr() const override; /** Returns an exact copy of this todo. The returned object is owned by the caller. @return A pointer to a Todo containing an exact copy of this object. */ Todo *clone() const override; /** Sets due date and time. @param dtDue The due date/time. @param first If true and the todo recurs, the due date of the first occurrence will be returned. If false and recurrent, the date of the current occurrence will be returned. If non-recurrent, the normal due date will be returned. */ void setDtDue(const QDateTime &dtDue, bool first = false); /** Returns the todo due datetime. @param first If true and the todo recurs, the due datetime of the first occurrence will be returned. If false and recurrent, the datetime of the current occurrence will be returned. If non-recurrent, the normal due datetime will be returned. @return A QDateTime containing the todo due datetime. */ Q_REQUIRED_RESULT QDateTime dtDue(bool first = false) const; /** Returns if the todo has a due datetime. @return true if the todo has a due datetime; false otherwise. */ Q_REQUIRED_RESULT bool hasDueDate() const; /** Returns if the todo has a start datetime. @return true if the todo has a start datetime; false otherwise. */ Q_REQUIRED_RESULT bool hasStartDate() const; /** @copydoc IncidenceBase::dtStart() */ Q_REQUIRED_RESULT QDateTime dtStart() const override; /** Returns the start datetime of the todo. @param first If true, the start datetime of the todo will be returned; also, if the todo recurs, the start datetime of the first occurrence will be returned. If false and the todo recurs, the relative start datetime will be returned, based on the datetime returned by dtRecurrence(). @return A QDateTime for the start datetime of the todo. */ Q_REQUIRED_RESULT QDateTime dtStart(bool first) const; /** Returns if the todo is 100% completed. @return true if the todo is 100% completed; false otherwise. @see isOverdue, isInProgress(), isOpenEnded(), isNotStarted(bool), setCompleted(), percentComplete() */ Q_REQUIRED_RESULT bool isCompleted() const; /** Sets completed state. @param completed If true set completed state to 100%, if false set completed state to 0%. @see isCompleted(), percentComplete() */ void setCompleted(bool completed); /** Returns what percentage of the to-do is completed. @return The percentage complete of the to-do as an integer between 0 and 100, inclusive. @see setPercentComplete(), isCompleted() */ Q_REQUIRED_RESULT int percentComplete() const; /** Sets what percentage of the to-do is completed. Valid values are in the range from 0 to 100. @param percent is the completion percentage, which as integer value between 0 and 100, inclusive. @see isCompleted(), setCompleted() */ void setPercentComplete(int percent); /** Returns the to-do was completion datetime. @return A QDateTime for the completeion datetime of the to-do. @see hasCompletedDate() */ Q_REQUIRED_RESULT QDateTime completed() const; /** Sets date and time of completion. @param completeDate is the to-do completion date. @see completed(), hasCompletedDate() */ void setCompleted(const QDateTime &completeDate); /** Returns if the to-do has a completion datetime. @return true if the to-do has a date associated with completion; false otherwise. @see setCompleted(), completed() */ bool hasCompletedDate() const; /** Returns true, if the to-do is in-progress (started, or >0% completed); otherwise return false. If the to-do is overdue, then it is not considered to be in-progress. @param first If true, the start and due dates of the todo will be used; also, if the todo recurs, the start date and due date of the first occurrence will be used. If false and the todo recurs, the relative start and due dates will be used, based on the date returned by dtRecurrence(). @see isOverdue(), isCompleted(), isOpenEnded(), isNotStarted(bool) */ Q_REQUIRED_RESULT bool isInProgress(bool first) const; /** Returns true, if the to-do is open-ended (no due date); false otherwise. @see isOverdue(), isCompleted(), isInProgress(), isNotStarted(bool) */ Q_REQUIRED_RESULT bool isOpenEnded() const; /** Returns true, if the to-do has yet to be started (no start date and 0% completed); otherwise return false. @param first If true, the start date of the todo will be used; also, if the todo recurs, the start date of the first occurrence will be used. If false and the todo recurs, the relative start date will be used, based on the date returned by dtRecurrence(). @see isOverdue(), isCompleted(), isInProgress(), isOpenEnded() */ Q_REQUIRED_RESULT bool isNotStarted(bool first) const; /** @copydoc IncidenceBase::shiftTimes() */ void shiftTimes(const QTimeZone &oldZone, const QTimeZone &newZone) override; /** @copydoc IncidenceBase::setAllDay(). */ void setAllDay(bool allDay) override; /** Sets the due date/time of the current occurrence if recurrent. @param dt is the */ void setDtRecurrence(const QDateTime &dt); /** Returns the due date/time of the current occurrence if recurrent. */ Q_REQUIRED_RESULT QDateTime dtRecurrence() const; /** Returns true if the @p date specified is one on which the to-do will recur. Todos are a special case, hence the overload. It adds an extra check, which make it return false if there's an occurrence between the recur start and today. @param date is the date to check. @param timeZone is the time zone */ bool recursOn(const QDate &date, const QTimeZone &timeZone) const override; /** Returns true if this todo is overdue (e.g. due date is lower than today and not completed), else false. @see isCompleted(), isInProgress(), isOpenEnded(), isNotStarted(bool) */ bool isOverdue() const; /** @copydoc IncidenceBase::dateTime() */ Q_REQUIRED_RESULT QDateTime dateTime(DateTimeRole role) const override; /** @copydoc IncidenceBase::setDateTime() */ void setDateTime(const QDateTime &dateTime, DateTimeRole role) override; /** @copydoc IncidenceBase::mimeType() */ Q_REQUIRED_RESULT QLatin1String mimeType() const override; /** @copydoc Incidence::iconName() */ Q_REQUIRED_RESULT QLatin1String iconName(const QDateTime &recurrenceId = {}) const override; /** @copydoc Incidence::supportsGroupwareCommunication() */ bool supportsGroupwareCommunication() const override; /** Returns the Akonadi specific sub MIME type of a KCalCore::Todo. */ Q_REQUIRED_RESULT static QLatin1String todoMimeType(); protected: /** Compare this with @p todo for equality. @param todo is the to-do to compare. */ bool equals(const IncidenceBase &todo) const override; /** @copydoc IncidenceBase::assign() */ IncidenceBase &assign(const IncidenceBase &other) override; /** @copydoc IncidenceBase::virtual_hook() */ void virtual_hook(VirtualHook id, void *data) override; private: /** @copydoc IncidenceBase::accept() */ bool accept(Visitor &v, const IncidenceBase::Ptr &incidence) override; /** Disabled, otherwise could be dangerous if you subclass Todo. Use IncidenceBase::operator= which is safe because it calls virtual function assign(). @param other is another Todo object to assign to this one. */ Todo &operator=(const Todo &other); // For polymorfic serialization void serialize(QDataStream &out); void deserialize(QDataStream &in); //@cond PRIVATE class Private; Private *const d; //@endcond }; } // namespace KCalCore //@cond PRIVATE Q_DECLARE_TYPEINFO(KCalCore::Todo::Ptr, Q_MOVABLE_TYPE); Q_DECLARE_METATYPE(KCalCore::Todo::Ptr) Q_DECLARE_METATYPE(KCalCore::Todo *) - -namespace Akonadi -{ -// super class trait specialization -template <> struct SuperClass : public SuperClassTrait {}; -} //@endcond #endif