diff -r e8e63152f320 -r 2a9601315dfc javaextensions/pim/versit/inc.s60/cpimeventpropertyconverter.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/javaextensions/pim/versit/inc.s60/cpimeventpropertyconverter.h Mon May 03 12:27:20 2010 +0300 @@ -0,0 +1,297 @@ +/* +* Copyright (c) 2008 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: Converts event properties PIM API <-> versit + * +*/ + + +#ifndef CPIMEVENTPROPERTYCONVERTER_H +#define CPIMEVENTPROPERTYCONVERTER_H + +// INTERANL INCLUDES +#include "pimevent.h" +#include "pimcommon.h" + +// EXTERNAL INCLUDES +#include + +// FORWARD DECLARATION +class CParserProperty; +class CPIMParserProperty; +class CPIMItem; +class CPIMEventItem; +class CParserVCalEntity; +class MPIMRepeatRuleData; +class TVersitDateTime; +class CVersitRecurrence; +class CParserPropertyValue; + +// CLASS DECLARATION + +/** + * Converts Properties from versit objects to fields in PIM Event items. + */ +NONSHARABLE_CLASS(CPIMEventPropertyConverter): public CBase +{ +public: // Constructors and destructor + + /** + * Two-phased constructor. + */ + static CPIMEventPropertyConverter* NewL(); + + /** + * Destructor + */ + virtual ~CPIMEventPropertyConverter(); + +public: // New functions + + /** + * Inserts a property from a vEvent to a PIM Event. + * If the property is DALARM, the date is not stored in the item, + * but in the aAlarm reference. + * + * @param aProperty property to insert + * @param aItem item to insert into + * @param aAlarm value of DALARM property is stored here + */ + void ConvertPropertyL(const CParserProperty& aProperty, + CPIMEventItem& aItem, + TPIMDate& aAlarm); + + /** + * Inserts a Field from a PIM Event Item to CParserVCalEntity. + * The field is insterted as a property. + * + * @param aItem item to read the field from + * @param aParser parser to insert the property to. + * @param aField field to convert + * + */ + void ConvertEventFieldL(const CPIMItem& aItem, + CParserVCalEntity& aParser, + TPIMEventField aField); + + /** + * Inserts a repeat rule to a parser. + * + * @param aRepeat Repeat rule to insert + * @param aParser Parser to insert into + */ + void ConvertRepeatRuleL(const MPIMRepeatRuleData* aRepeat, + CParserVCalEntity& aParser); + + /** + * Adds a new property to the vCalendar parser + * Note that property value and array of params are popped + * from the cleanup stack inside this function + * + * @param aPropertyValue Property value for the vCalendar property + * This needs not to be pushed to the cleanup stack before + * this function call since it is done straight from the start + * of this function + * @param aPropertyName Name of the property + * @param aParser vCalendar parser into which the new property is pushed + */ + void AddPropertyToParserL( + CParserPropertyValue* aPropertyValue, + const TDesC8& aPropertyName, + CParserVCalEntity& aParser); + +private: + /** + * C++ default constructor. + */ + CPIMEventPropertyConverter(); + + /** + * Converts a date property from a vEvent to a PIM Event Item. + * + * @param aProperty property to convert + * @param aItem item to write the field to + * + */ + void ConvertDatePropertyL(const CPIMParserProperty& aProperty, + CPIMEventItem& aItem); + + /** + * Converts an alarm property from a vEvent to a PIM Event Item. + * The date is not stored in the item, + * but in the aAlarm reference. + * + * @param aProperty property to convert + * @param aAlarm the value is stored here + * + */ + void ConvertAlarmPropertyL(const CPIMParserProperty& aProperty, + TPIMDate& aAlarm); + + /** + * Converts a string field from a vTodo to a PIM Event Item. + * + * @param aProperty property to convert + * @param aItem item to write the field to + * + */ + void ConvertStringPropertyL(const CPIMParserProperty& aProperty, + CPIMEventItem& aItem); + + /** + * Convert RRULE property from a vCalendar to a PIM Event Item. + * The repeat rule is stored in the repeat rule of the event item. + * @param aProperty property to convert + * @param aItem item to write the dates to + */ + void ConvertRepeatRulePropertyL(const CPIMParserProperty& aProperty, + CPIMEventItem& aItem); + + /** + * Convert EXDATE property from a vCalendar to a PIM Event Item. + * The exception dates are stored in the item as repeat rule + * exception dates. + * @param aProperty property to convert + * @param aItem item to write the dates to + * + */ + void ConvertExDatePropertyL(const CPIMParserProperty& aProperty, + CPIMEventItem& aItem); + + /** + * Convert CLASS property from a vCalendar to a PIM Event Item. + * (This is not done among other string/HBufC properties, because + * the resulting data is not string, but int.) + * + * @param aProperty property to convert + * @param aItem item to write the dates to + */ + void ConvertClassPropertyL(const CPIMParserProperty& aProperty, + CPIMEventItem& aItem); + + /** + * Inserts exception dates to a parser. + * + * @param aDates Exception dates to add + * @param aParser Parser to insert into + */ + void ConvertExceptionDatesL(const CArrayFix& aDates, + CParserVCalEntity& aParser); + + /** + * Converts a date field from a PIM Event Item to + * a CParserVCalEntity. + * The field is stored in the parser as a property. + * + * @param aItem item to read the field from + * @param aParser parser to insert the property to. + * @param aField field to convert + * @param aIndex index to the field to convert + * + * @par Leaving: + * This method leaves on an error with system wide error codes. + */ + void ConvertDateFieldL(const CPIMItem& aItem, + CParserVCalEntity& aParser, + TPIMEventField aField, + TInt aIndex); + + /** + * Converts an alarm field from a PIM Event Item to + * a CParserVCalEntity. + * The field is stored in the parser as a property. + * + * @param aItem item to read the field from + * @param aParser parser to insert the property to. + * @param aField field to convert + * @param aIndex index to the field to convert + * + * @par Leaving: + * This method leaves on an error with system wide error codes. + */ + void ConvertAlarmFieldL(const CPIMItem& aItem, + CParserVCalEntity& aParser, + TPIMEventField aField, + TInt aIndex); + + /** + * Converts a string field from a PIM Event Item to + * a CParserVCalEntity. + * The field is stored in the parser as a property. + * + * @param aItem item to read the field from + * @param aParser parser to insert the property to. + * @param aField field to convert + * @param aIndex index to the field to convert + * + * @par Leaving: + * This method leaves on an error with system wide error codes. + */ + void ConvertStringFieldL(const CPIMItem& aItem, + CParserVCalEntity& aParser, + TPIMEventField aField, + TInt aIndex); + + /** + * Coverts the Event.CLASS field from a PIM Event item to + * a CParserVCalEntity. + * The field is stored in the parser as a property. + * + * @param aItem item to read the field from + * @param aParser parser to insert the property to. + * @param aField field to convert + * @param aIndex index to the field to convert + * + * @par Leaving: + * This method leaves on an error with system wide error codes. + */ + void ConvertClassFieldL( + const CPIMItem& aItem, + CParserVCalEntity& aParser, + TPIMEventField aField, + TInt aIndex); + + /** + * Gets the fields from a repeat rule. The fields are stored in the + * given pointers. + * + * @param aRepeat Fields are read from this repeat rule. + * @param aInterval interval is stored here + * @param aFrequency frequency is stored here + * @param aVersitEndDate end date is stored here + */ + void GetRepeatRuleFieldsL(const MPIMRepeatRuleData* aRepeat, + TInt* aInterval, + TInt* aFrequency, + TVersitDateTime** aVersitEndDate); + + /** + * Creates a versit recurrence according to given parameters. + * If aVersitEndDate is given, the created recurrence takes its + * ownership. + * + * @param aFrequency frequency of the recurrence + * @param aInterval interval of the recurrence + * @param aVersitEndDate end date (may be NULL) + * + * @return Versit recurrence + */ + CVersitRecurrence* CreateRecurrenceL( + TInt aFrequency, + TInt aInterval, + TVersitDateTime* aVersitEndDate); + +}; + +#endif // CPIMEVENTPROPERTYCONVERTER_H +// End of file