--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/meetingrequest/mrversit2/inc/cesmricalbase.h Thu Dec 17 08:39:21 2009 +0200
@@ -0,0 +1,800 @@
+/*
+* Copyright (c) 2005-2009 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description: Holds the definition of CESMRICalBase.
+*
+*
+*/
+
+#ifndef CESMRICALBASE_H
+#define CESMRICALBASE_H
+
+// System includes
+#include <e32base.h> // CBase
+
+// Forward declarations.
+class CESMRICalContentLineReader;
+class CESMRICalContentLineWriter;
+class CESMRICalProperty;
+class CESMRICalComponent;
+class CESMRICalValue;
+
+/**
+ *Abstract base class of all classes representing iCalendar components.
+ *@publishedPartner
+ */
+class CESMRICalBase : public CBase
+ {
+public: // Enumeration.
+ enum TICalComponentType
+ {
+ /** An invalid or X-custom component. */
+ EICalInvalid,
+ /** A VCALENDAR component.*/
+ EICalCalendar,
+ /** A VEVENT component.*/
+ EICalEvent,
+ /** A VTODO component.*/
+ EICalTodo,
+ /** A VJOURNAL component.*/
+ EICalJournal,
+ /** A VALARM component.*/
+ EICalAlarm,
+ /** A VFREEBUSY component.*/
+ EICalFreeBusy,
+ /** A VTIMEZONE component.*/
+ EICalTimeZone,
+ /** A STANDARD component.*/
+ EICalStandard,
+ /** A DAYLIGHT component.*/
+ EICalDaylight
+ };
+public: // Enumeration.
+ enum TICalMethod
+ {
+ /** No method specified. */
+ EMethodNone,
+ /** The RFC2445-defined method value 'Publish'. */
+ EMethodPublish,
+ /** The RFC2445-defined method value 'Request'. */
+ EMethodRequest,
+ /** The RFC2445-defined method value 'Reply'. */
+ EMethodReply,
+ /** The RFC2445-defined method value 'Add'. */
+ EMethodAdd,
+ /** The RFC2445-defined method value 'Cancel'. */
+ EMethodCancel,
+ /** The RFC2445-defined method value 'Refresh'. */
+ EMethodRefresh,
+ /** The RFC2445-defined method value 'Counter'. */
+ EMethodCounter,
+ /** The RFC2445-defined method value 'DeclineCounter'. */
+ EMethodDeclineCounter
+ };
+protected:
+ enum TICalComponentMethodBitMasks
+ {
+ EMaskEventNone = 1 << 0,
+ EMaskEventPublish = 1 << 1,
+ EMaskEventRequest = 1 << 2,
+ EMaskEventReply = 1 << 3,
+ EMaskEventAdd = 1 << 4,
+ EMaskEventCancel = 1 << 5,
+ EMaskEventRefresh = 1 << 6,
+ EMaskEventCounter = 1 << 7,
+ EMaskEventDeclineCounter = 1 << 8,
+ EMaskTodoNone = 1 << 9,
+ EMaskTodoPublish = 1 << 10,
+ EMaskTodoRequest = 1 << 11,
+ EMaskTodoReply = 1 << 12,
+ EMaskTodoAdd = 1 << 13,
+ EMaskTodoCancel = 1 << 14,
+ EMaskTodoRefresh = 1 << 15,
+ EMaskTodoCounter = 1 << 16,
+ EMaskTodoDeclineCounter = 1 << 17,
+ EMaskJournalNone = 1 << 18,
+ EMaskJournalPublish = 1 << 19,
+ EMaskJournalAdd = 1 << 20,
+ EMaskJournalCancel = 1 << 21,
+ EMaskFreeBusyNone = 1 << 22,
+ EMaskFreeBusyPublish = 1 << 23,
+ EMaskFreeBusyRequest = 1 << 24,
+ EMaskFreeBusyReply = 1 << 25,
+ EMaskAlarmAny = 1 << 26,
+ EMaskTimezoneAny = 1 << 27,
+ EMaskTimezoneIntervalAny = 1 << 28
+ };
+ enum TICalComponentMethodFlags
+ {
+ EICalAttendeeFlags = EMaskEventRequest |
+ EMaskEventReply |
+ EMaskEventAdd |
+ EMaskEventCancel |
+ EMaskEventRefresh |
+ EMaskEventCounter |
+ EMaskTodoRequest |
+ EMaskTodoReply |
+ EMaskTodoAdd |
+ EMaskTodoCancel |
+ EMaskTodoRefresh |
+ EMaskTodoCounter |
+ EMaskTodoDeclineCounter |
+ EMaskJournalCancel |
+ EMaskFreeBusyRequest |
+ EMaskFreeBusyReply,
+
+ EICalDtStampFlags = EMaskEventPublish |
+ EMaskEventRequest |
+ EMaskEventReply |
+ EMaskEventAdd |
+ EMaskEventCancel |
+ EMaskEventRefresh |
+ EMaskEventCounter |
+ EMaskEventDeclineCounter|
+ EMaskTodoPublish |
+ EMaskTodoRequest |
+ EMaskTodoReply |
+ EMaskTodoAdd |
+ EMaskTodoCancel |
+ EMaskTodoRefresh |
+ EMaskTodoCounter |
+ EMaskTodoDeclineCounter |
+ EMaskJournalPublish |
+ EMaskJournalAdd |
+ EMaskJournalCancel |
+ EMaskFreeBusyPublish |
+ EMaskFreeBusyRequest |
+ EMaskFreeBusyReply,
+
+ EICalDtStartFlags = EMaskEventPublish |
+ EMaskEventRequest |
+ EMaskEventReply |
+ EMaskEventAdd |
+ EMaskEventCancel |
+ EMaskEventCounter |
+ EMaskTodoPublish |
+ EMaskTodoRequest |
+ EMaskTodoReply |
+ EMaskTodoAdd |
+ EMaskTodoCancel |
+ EMaskTodoCounter |
+ EMaskTodoDeclineCounter |
+ EMaskJournalPublish |
+ EMaskJournalAdd |
+ EMaskJournalCancel |
+ EMaskFreeBusyPublish |
+ EMaskFreeBusyRequest |
+ EMaskFreeBusyReply,
+
+ EICalOrganizerFlags = EMaskEventPublish |
+ EMaskEventRequest |
+ EMaskEventReply |
+ EMaskEventAdd |
+ EMaskEventCancel |
+ EMaskEventRefresh |
+ EMaskEventCounter |
+ EMaskEventDeclineCounter|
+ EMaskTodoPublish |
+ EMaskTodoRequest |
+ EMaskTodoReply |
+ EMaskTodoAdd |
+ EMaskTodoCancel |
+ EMaskTodoCounter |
+ EMaskTodoDeclineCounter |
+ EMaskJournalPublish |
+ EMaskJournalAdd |
+ EMaskJournalCancel |
+ EMaskFreeBusyPublish |
+ EMaskFreeBusyRequest |
+ EMaskFreeBusyReply,
+
+ EICalSummaryFlags = EMaskEventPublish |
+ EMaskEventRequest |
+ EMaskEventReply |
+ EMaskEventAdd |
+ EMaskEventCancel |
+ EMaskEventCounter |
+ EMaskTodoPublish |
+ EMaskTodoRequest |
+ EMaskTodoReply |
+ EMaskTodoAdd |
+ EMaskTodoCounter |
+ EMaskTodoCounter |
+ EMaskJournalPublish |
+ EMaskJournalAdd |
+ EMaskJournalCancel,
+
+ EICalUIDFlags = EMaskEventPublish |
+ EMaskEventRequest |
+ EMaskEventReply |
+ EMaskEventAdd |
+ EMaskEventCancel |
+ EMaskEventRefresh |
+ EMaskEventCounter |
+ EMaskEventDeclineCounter|
+ EMaskTodoPublish |
+ EMaskTodoRequest |
+ EMaskTodoReply |
+ EMaskTodoAdd |
+ EMaskTodoCancel |
+ EMaskTodoRefresh |
+ EMaskTodoCounter |
+ EMaskTodoDeclineCounter |
+ EMaskJournalPublish |
+ EMaskJournalAdd |
+ EMaskJournalCancel |
+ EMaskFreeBusyRequest |
+ EMaskFreeBusyReply,
+
+ EICalRecurrenceIdFlags = EMaskEventPublish |
+ EMaskEventRequest |
+ EMaskEventReply |
+ EMaskEventCancel |
+ EMaskEventRefresh |
+ EMaskEventCounter |
+ EMaskEventDeclineCounter|
+ EMaskTodoPublish |
+ EMaskTodoRequest |
+ EMaskTodoReply |
+ EMaskTodoCancel |
+ EMaskTodoRefresh |
+ EMaskTodoCounter |
+ EMaskTodoDeclineCounter |
+ EMaskJournalPublish |
+ EMaskJournalCancel,
+
+ EICalSequenceFlags = EMaskEventPublish |
+ EMaskEventRequest |
+ EMaskEventReply |
+ EMaskEventAdd |
+ EMaskEventCancel |
+ EMaskEventCounter |
+ EMaskEventDeclineCounter|
+ EMaskTodoPublish |
+ EMaskTodoRequest |
+ EMaskTodoReply |
+ EMaskTodoAdd |
+ EMaskTodoCancel |
+ EMaskTodoCounter |
+ EMaskTodoDeclineCounter |
+ EMaskJournalPublish |
+ EMaskJournalAdd |
+ EMaskJournalCancel,
+
+ EICalAttachFlags = EMaskEventPublish |
+ EMaskEventRequest |
+ EMaskEventReply |
+ EMaskEventAdd |
+ EMaskEventCancel |
+ EMaskEventCounter |
+ EMaskTodoPublish |
+ EMaskTodoRequest |
+ EMaskTodoReply |
+ EMaskTodoAdd |
+ EMaskTodoCancel |
+ EMaskTodoCounter |
+ EMaskTodoDeclineCounter |
+ EMaskJournalPublish |
+ EMaskJournalAdd |
+ EMaskJournalCancel,
+
+ EICalCategoriesFlags = EMaskEventPublish |
+ EMaskEventRequest |
+ EMaskEventReply |
+ EMaskEventAdd |
+ EMaskEventCancel |
+ EMaskEventCounter |
+ EMaskTodoPublish |
+ EMaskTodoRequest |
+ EMaskTodoReply |
+ EMaskTodoAdd |
+ EMaskTodoCancel |
+ EMaskTodoCounter |
+ EMaskTodoDeclineCounter |
+ EMaskJournalPublish |
+ EMaskJournalAdd |
+ EMaskJournalCancel,
+
+ EICalClassFlags = EMaskEventPublish |
+ EMaskEventRequest |
+ EMaskEventReply |
+ EMaskEventAdd |
+ EMaskEventCancel |
+ EMaskEventCounter |
+ EMaskTodoPublish |
+ EMaskTodoRequest |
+ EMaskTodoReply |
+ EMaskTodoAdd |
+ EMaskTodoCancel |
+ EMaskTodoCounter |
+ EMaskTodoDeclineCounter |
+ EMaskJournalPublish |
+ EMaskJournalAdd |
+ EMaskJournalCancel,
+
+ EICalCommentFlags = EMaskEventPublish |
+ EMaskEventRequest |
+ EMaskEventReply |
+ EMaskEventAdd |
+ EMaskEventCancel |
+ EMaskEventRefresh |
+ EMaskEventCounter |
+ EMaskEventDeclineCounter|
+ EMaskTodoPublish |
+ EMaskTodoRequest |
+ EMaskTodoReply |
+ EMaskTodoAdd |
+ EMaskTodoCancel |
+ EMaskTodoDeclineCounter |
+ EMaskJournalPublish |
+ EMaskJournalAdd |
+ EMaskJournalCancel |
+ EMaskFreeBusyPublish |
+ EMaskFreeBusyRequest |
+ EMaskFreeBusyReply,
+
+ EICalContactFlags = EMaskEventPublish |
+ EMaskEventRequest |
+ EMaskEventReply |
+ EMaskEventAdd |
+ EMaskEventCancel |
+ EMaskEventCounter |
+ EMaskTodoPublish |
+ EMaskTodoRequest |
+ EMaskTodoReply |
+ EMaskTodoAdd |
+ EMaskTodoCancel |
+ EMaskTodoCounter |
+ EMaskTodoDeclineCounter |
+ EMaskJournalPublish |
+ EMaskJournalAdd |
+ EMaskJournalCancel |
+ EMaskFreeBusyPublish |
+ EMaskFreeBusyRequest |
+ EMaskFreeBusyReply,
+
+ EICalCreatedFlags = EMaskEventPublish |
+ EMaskEventRequest |
+ EMaskEventReply |
+ EMaskEventAdd |
+ EMaskEventCancel |
+ EMaskEventCounter |
+ EMaskTodoPublish |
+ EMaskTodoRequest |
+ EMaskTodoReply |
+ EMaskTodoAdd |
+ EMaskTodoCancel |
+ EMaskTodoCounter |
+ EMaskTodoDeclineCounter |
+ EMaskJournalPublish |
+ EMaskJournalAdd |
+ EMaskJournalCancel,
+
+ EICalDescriptionFlags = EMaskEventPublish |
+ EMaskEventRequest |
+ EMaskEventReply |
+ EMaskEventAdd |
+ EMaskEventCancel |
+ EMaskEventCounter |
+ EMaskTodoPublish |
+ EMaskTodoRequest |
+ EMaskTodoReply |
+ EMaskTodoAdd |
+ EMaskTodoCancel |
+ EMaskTodoCounter |
+ EMaskTodoDeclineCounter |
+ EMaskJournalPublish |
+ EMaskJournalAdd |
+ EMaskJournalCancel,
+
+ EICalDtEndFlags = EMaskEventPublish |
+ EMaskEventRequest |
+ EMaskEventReply |
+ EMaskEventAdd |
+ EMaskEventCancel |
+ EMaskEventCounter |
+ EMaskFreeBusyPublish |
+ EMaskFreeBusyRequest |
+ EMaskFreeBusyReply,
+
+ EICalFreeBusyFlags = EMaskFreeBusyPublish |
+ EMaskFreeBusyReply,
+
+ EICalDueFlags = EMaskTodoPublish |
+ EMaskTodoRequest |
+ EMaskTodoReply |
+ EMaskTodoAdd |
+ EMaskTodoCancel |
+ EMaskTodoCounter |
+ EMaskTodoDeclineCounter,
+
+ EICalDurationFlags = EMaskEventPublish |
+ EMaskEventRequest |
+ EMaskEventReply |
+ EMaskEventAdd |
+ EMaskEventCancel |
+ EMaskEventCounter |
+ EMaskTodoPublish |
+ EMaskTodoRequest |
+ EMaskTodoReply |
+ EMaskTodoAdd |
+ EMaskTodoCancel |
+ EMaskTodoCounter |
+ EMaskTodoDeclineCounter,
+
+ EICalExDateFlags = EMaskEventPublish |
+ EMaskEventRequest |
+ EMaskEventReply |
+ EMaskEventAdd |
+ EMaskEventCancel |
+ EMaskEventCounter |
+ EMaskTodoPublish |
+ EMaskTodoRequest |
+ EMaskTodoReply |
+ EMaskTodoAdd |
+ EMaskTodoCancel |
+ EMaskTodoCounter |
+ EMaskTodoDeclineCounter |
+ EMaskJournalPublish |
+ EMaskJournalAdd |
+ EMaskJournalCancel,
+
+ EICalExRuleFlags = EMaskEventPublish |
+ EMaskEventRequest |
+ EMaskEventReply |
+ EMaskEventAdd |
+ EMaskEventCancel |
+ EMaskEventCounter |
+ EMaskTodoPublish |
+ EMaskTodoRequest |
+ EMaskTodoReply |
+ EMaskTodoAdd |
+ EMaskTodoCancel |
+ EMaskTodoCounter |
+ EMaskTodoDeclineCounter |
+ EMaskJournalPublish |
+ EMaskJournalAdd |
+ EMaskJournalCancel,
+
+ EICalGeoFlags = EMaskEventPublish |
+ EMaskEventRequest |
+ EMaskEventReply |
+ EMaskEventAdd |
+ EMaskEventCancel |
+ EMaskEventCounter |
+ EMaskTodoPublish |
+ EMaskTodoRequest |
+ EMaskTodoReply |
+ EMaskTodoAdd |
+ EMaskTodoCancel |
+ EMaskTodoCounter |
+ EMaskTodoDeclineCounter,
+
+ EICalLastModifiedFlags = EMaskEventPublish |
+ EMaskEventRequest |
+ EMaskEventReply |
+ EMaskEventAdd |
+ EMaskEventCancel |
+ EMaskEventCounter |
+ EMaskTodoPublish |
+ EMaskTodoRequest |
+ EMaskTodoReply |
+ EMaskTodoAdd |
+ EMaskTodoCancel |
+ EMaskTodoCounter |
+ EMaskTodoDeclineCounter |
+ EMaskJournalPublish |
+ EMaskJournalAdd |
+ EMaskJournalCancel,
+
+ EICalLocationFlags = EMaskEventPublish |
+ EMaskEventRequest |
+ EMaskEventReply |
+ EMaskEventAdd |
+ EMaskEventCancel |
+ EMaskEventCounter |
+ EMaskTodoPublish |
+ EMaskTodoRequest |
+ EMaskTodoReply |
+ EMaskTodoAdd |
+ EMaskTodoCancel |
+ EMaskTodoCounter |
+ EMaskTodoDeclineCounter,
+
+ EICalPercentCompleteFlags = EMaskTodoPublish |
+ EMaskTodoRequest |
+ EMaskTodoReply |
+ EMaskTodoAdd |
+ EMaskTodoCancel |
+ EMaskTodoCounter |
+ EMaskTodoDeclineCounter,
+
+ EICalPriorityFlags = EMaskEventPublish |
+ EMaskEventRequest |
+ EMaskEventReply |
+ EMaskEventAdd |
+ EMaskEventCancel |
+ EMaskEventCounter |
+ EMaskTodoRequest |
+ EMaskTodoReply |
+ EMaskTodoAdd |
+ EMaskTodoCancel |
+ EMaskTodoDeclineCounter,
+
+ EICalRDateFlags = EMaskEventPublish |
+ EMaskEventRequest |
+ EMaskEventReply |
+ EMaskEventAdd |
+ EMaskEventCancel |
+ EMaskEventCounter |
+ EMaskTodoPublish |
+ EMaskTodoRequest |
+ EMaskTodoReply |
+ EMaskTodoAdd |
+ EMaskTodoCancel |
+ EMaskTodoCounter |
+ EMaskTodoDeclineCounter |
+ EMaskJournalPublish |
+ EMaskJournalAdd |
+ EMaskJournalCancel,
+
+ EICalRelatedToFlags = EMaskEventPublish |
+ EMaskEventRequest |
+ EMaskEventReply |
+ EMaskEventAdd |
+ EMaskEventCancel |
+ EMaskEventCounter |
+ EMaskTodoPublish |
+ EMaskTodoRequest |
+ EMaskTodoReply |
+ EMaskTodoAdd |
+ EMaskTodoCancel |
+ EMaskTodoCancel |
+ EMaskTodoCounter |
+ EMaskTodoDeclineCounter |
+ EMaskJournalPublish |
+ EMaskJournalAdd |
+ EMaskJournalCancel,
+
+ EICalRequestStatusFlags = EMaskEventRequest |
+ EMaskEventCounter |
+ EMaskEventDeclineCounter|
+ EMaskTodoReply |
+ EMaskTodoCounter |
+ EMaskTodoDeclineCounter |
+ EMaskFreeBusyReply,
+
+ EICalResourcesFlags = EMaskEventPublish |
+ EMaskEventRequest |
+ EMaskEventReply |
+ EMaskEventAdd |
+ EMaskEventCancel |
+ EMaskEventCounter |
+ EMaskTodoPublish |
+ EMaskTodoRequest |
+ EMaskTodoReply |
+ EMaskTodoAdd |
+ EMaskTodoCancel |
+ EMaskTodoCounter |
+ EMaskTodoDeclineCounter,
+
+ EICalRRuleFlags = EMaskEventPublish |
+ EMaskEventRequest |
+ EMaskEventReply |
+ EMaskEventAdd |
+ EMaskEventCancel |
+ EMaskEventCounter |
+ EMaskTodoPublish |
+ EMaskTodoRequest |
+ EMaskTodoReply |
+ EMaskTodoAdd |
+ EMaskTodoCancel |
+ EMaskTodoCounter |
+ EMaskTodoDeclineCounter |
+ EMaskJournalPublish |
+ EMaskJournalAdd |
+ EMaskJournalCancel,
+
+ EICalStatusFlags = EMaskEventPublish |
+ EMaskEventRequest |
+ EMaskEventReply |
+ EMaskEventAdd |
+ EMaskEventCancel |
+ EMaskEventCounter |
+ EMaskTodoPublish |
+ EMaskTodoRequest |
+ EMaskTodoReply |
+ EMaskTodoAdd |
+ EMaskTodoCancel |
+ EMaskTodoCounter |
+ EMaskTodoDeclineCounter |
+ EMaskJournalPublish |
+ EMaskJournalAdd |
+ EMaskJournalCancel,
+
+ EICalTranspFlags = EMaskEventPublish |
+ EMaskEventRequest |
+ EMaskEventReply |
+ EMaskEventAdd |
+ EMaskEventCancel |
+ EMaskEventCounter,
+
+ EICalUrlFlags = EMaskEventPublish |
+ EMaskEventRequest |
+ EMaskEventReply |
+ EMaskEventAdd |
+ EMaskEventCancel |
+ EMaskEventCounter |
+ EMaskTodoPublish |
+ EMaskTodoRequest |
+ EMaskTodoReply |
+ EMaskTodoAdd |
+ EMaskTodoCancel |
+ EMaskTodoCounter |
+ EMaskTodoDeclineCounter |
+ EMaskJournalPublish |
+ EMaskJournalAdd |
+ EMaskJournalCancel |
+ EMaskFreeBusyPublish |
+ EMaskFreeBusyReply,
+
+
+
+
+ // EICalClassFlags = 0b00000001111010111111010111111,
+
+ };
+public: // Destruction.
+ ~CESMRICalBase();
+
+public: // Methods.
+ /**
+ * Creates a new property with a value from the given parameters, adds it to
+ * this object and returns a modifiable reference to it.
+ * @param aName Name of the property to add.
+ * @param aValue Value of the property to add.
+ * @return A reference to a new property owned by this object.
+ * @leave Leaves with KErrUnsupportedProperty if the given property is not valid.
+ * for this component.
+ * @publishedPartner
+ */
+ IMPORT_C CESMRICalProperty& AddPropertyL(const TDesC& aName, const TDesC& aValue);
+
+ /**
+ * Creates a new property with a value and adds it to this object, returning a
+ * reference to it. Ownership of aValue is transferred and it will be deleted if
+ * this function leaves.
+ * @leave Leaves with KErrPropertyHasNoValue if aValue is Null.
+ * @leave Leaves with KErrUnsupportedProperty if the given property is not valid.
+ * @return A new property
+ * @publishedPartner
+ */
+ IMPORT_C CESMRICalProperty& AddPropertyL(const TDesC& aName, CESMRICalValue* aValue);
+
+ /**
+ * Creates a new component, adds it to this object, and returns a modifiable
+ * reference to it.
+ * @param aType The type of component to be created.
+ * @return A new component
+ * @leave Leaves with KErrUnsupportedComponent if the given component is not a
+ * valid subcomponent for this object.
+ * @publishedPartner
+ */
+ IMPORT_C CESMRICalComponent& AddComponentL(TICalComponentType aType);
+
+ /**
+ * Access function for the component array.
+ * @return The array of components as a constant reference.
+ * @publishedPartner
+ */
+ IMPORT_C const RPointerArray<CESMRICalComponent>& Components() const;
+
+ /**
+ * Access function for the property array.
+ * @return The array of properties as a constant reference.
+ * @publishedPartner
+ */
+ IMPORT_C const RPointerArray<CESMRICalProperty>& Properties() const;
+
+ /**
+ * Returns the descriptor form of this component type.
+ * @return The descriptor form of this component type.
+ * @publishedPartner
+ */
+ IMPORT_C const TDesC& TypeStringL() const;
+
+ /**
+ * Access method returning the concrete type as an enumeration.
+ * @return The type of the concrete derived class.
+ * @publishedPartner
+ */
+ IMPORT_C TICalComponentType Type() const;
+
+ /**
+ * Checks for a component already existing in current object's sub-components
+ * @param aType The type of the component to check.
+ * @return ETrue if the property does exist, EFalse otherwise
+ * @publishedPartner
+ */
+ IMPORT_C TBool ComponentExists(TICalComponentType aType) const;
+
+ /**
+ * Finds the first property with a particular name and returns a pointer to it.
+ * Ownership is not passed out.
+ * @param aName The name of the property to search for.
+ * @return A pointer to the property, or NULL.
+ * @publishedPartner
+ */
+ IMPORT_C const CESMRICalProperty* FindProperty(const TDesC& aName) const;
+
+ /**
+ * Takes a line reader and reads lines from it until the end of the component is
+ * located. Any other END:, or an end of file, are treated as errors.
+ * @param aReader The line reader to read from.
+ * @leave Leaves with KErrCorrupt if the component is corrupt.
+ * @internalTechnology
+ */
+ void InternalizeL(CESMRICalContentLineReader& aReader);
+
+ /**
+ * Takes a line writer and exports this component, including all owned properties
+ * and sub components, to it.
+ * @param aWriter the writer to export to.
+ * @internalTechnology
+ */
+ void ExternalizeL(CESMRICalContentLineWriter& aWriter) const;
+
+ /**
+ * Converts between a TICalComponentType and the type as a descriptor.
+ * @param aName The type as a descriptor.
+ * @return The type as an enumeration.
+ * @leave KErrCorrupt if this is not a valid type.
+ * @internalTechnology
+ */
+ static TICalComponentType TypeFromNameL(const TDesC& aName);
+
+protected: // Construction.
+ CESMRICalBase();
+
+protected: // Methods.
+ /**
+ * Converts between a TICalComponentType and the type as a descriptor.
+ * @param aType The type as an enumeration.
+ * @return The type as a descriptor.
+ * @leave KErrCorrupt if this is not a valid type.
+ * @internalTechnology
+ */
+ const TDesC& TypeStringL(TICalComponentType aType) const;
+
+ TBool ValidateProperty(const TDesC& aName) const;
+
+protected: // must be implemented by subclasses
+ virtual TBool ValidatePropertyImpl(const TDesC& aName) const = 0;
+ virtual TBool ValidateComponent(TICalComponentType aType) const = 0;
+
+private: // Implementation.
+ CESMRICalComponent* CreateComponentL(TICalComponentType aType);
+ CESMRICalProperty* CreatePropertyL(const TDesC& aName);
+
+protected: // Data.
+ RPointerArray<CESMRICalComponent> iComponents;//own
+ RPointerArray<CESMRICalProperty> iProperties;//own
+
+ TICalComponentType iComponentType;//own
+ TICalMethod iMethod;
+ TUint32 iComponentMethodBitMask;
+ };
+
+#endif // CESMRICALBASE_H
+
+// End of File