--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/javaextensions/pim/versit/inc.s60/cpimcardpropertyconverter.h Tue Apr 27 16:30:29 2010 +0300
@@ -0,0 +1,350 @@
+/*
+* 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 properties vCard <-> PIM API
+ *
+*/
+
+
+#ifndef CPIMCARDPROPERTYCONVERTER_H
+#define CPIMCARDPROPERTYCONVERTER_H
+
+// INCLUDES
+#include <e32base.h> // CBase
+#include <badesca.h> // CDesCArray
+#include "pimcontact.h" // TPIMContactField
+#include "pimcommon.h" // TPIMAttribute
+// CLASS DECLARATION
+class CPIMItem;
+class CPIMContactItem;
+class CParserVCard;
+class CParserParam;
+class CPIMParserProperty;
+class CParserProperty;
+class CPIMContactValidator;
+class CPIMVCardParserParamArray;
+class CParserPropertyValue;
+
+/**
+ * Converts Properties from versit objects to fields in PIM Contact items.
+ */
+NONSHARABLE_CLASS(CPIMCardPropertyConverter): public CBase
+{
+public: // Constructors and destructor
+
+ /**
+ * Two-phased constructor.
+ */
+ static CPIMCardPropertyConverter* NewL(
+ const CPIMContactValidator& aValidator);
+
+ /**
+ * Destructor
+ */
+ virtual ~CPIMCardPropertyConverter();
+
+public: // New functions
+
+ /**
+ * Inserts a Field from a PIM Contact Item to CParserVCard 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 ConvertFieldL(
+ const CPIMItem& aItem,
+ CParserVCard& aParser,
+ TPIMContactField aField);
+
+ /**
+ * Inserts a property from a vCard to a PIM Contact Item as a field.
+ * If the property contains another vCard, that vCard is returned.
+ * Otherwise NULL is returned.
+ *
+ * @param aProperty property to convert
+ * @param aItem item to write the field to
+ * @param aItemArray Array where agent field items are stored
+ *
+ * @return contained vCard, or NULL.
+ */
+ CParserVCard* ConvertPropertyL(
+ const CParserProperty& aProperty,
+ CPIMContactItem& aItem);
+
+private:
+ /**
+ * C++ default constructor.
+ */
+ CPIMCardPropertyConverter(const CPIMContactValidator& aValidator);
+
+ /**
+ * Converts an agent property. The contained vCard is returned.
+ *
+ * @param aProperty property to convert
+ *
+ * @return contained vCard.
+ */
+ CParserVCard* ConvertAgentPropertyL(
+ const CPIMParserProperty& aProperty);
+
+ /**
+ * Adds parameters "HOME" and "WORK" to an array of property
+ * parameters if needed. Ownership of the new parameter objects
+ * is transferred to the caller.
+ *
+ * @param aAttributes Checked, if contains EPIMContactAttrHome or
+ * EPIMContactAttrWork, the parameter is added.
+ *
+ * @param aParamArray Property parameter array to add the parameters
+ * to.
+ */
+ void AddParamHomeAndWorkL(TPIMAttribute aAttributes,
+ CPIMVCardParserParamArray& aParamArray);
+
+ /**
+ * Converts an address field from a PIM Contact Item to CParserVCard.
+ * 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 ConvertAddressFieldL(
+ const CPIMItem& aItem,
+ CParserVCard& aParser,
+ TPIMContactField aField,
+ TInt aIndex);
+
+ /**
+ * Converts a name field from a PIM Contact Item to CParserVCard.
+ * 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 ConvertNameFieldL(
+ const CPIMItem& aItem,
+ CParserVCard& aParser,
+ TPIMContactField aField,
+ TInt aIndex);
+
+ /**
+ * Converts name and address arrays from a vCard to a PIM Contact Item.
+ *
+ * @param aProperty property to convert
+ * @param aItem item to write the field to
+ *
+ */
+ void ConvertCDesCArrayPropertyL(
+ const CPIMParserProperty& aProperty,
+ CPIMContactItem& aItem);
+
+ /**
+ * Converts a date field from a PIM Contact Item to a CParserVCard.
+ * 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,
+ CParserVCard& aParser,
+ TPIMContactField aField,
+ TInt aIndex);
+
+ /**
+ * Converts a birthday field from a vCard to a PIM Contact Item.
+ *
+ * @param aProperty property to convert
+ * @param aItem item to write the field to
+ *
+ */
+ void ConvertDatePropertyL(
+ const CPIMParserProperty& aProperty,
+ CPIMContactItem& aItem);
+
+ /**
+ * Adds new parser parameter to the parameter array
+ *
+ * @param aArrayOfParams Parameter array
+ * @param aParamName The name of the parameter which will be added
+ */
+ void AddParserParameterL(
+ CPIMVCardParserParamArray& aArrayOfParams,
+ const TPtrC8 aParamName);
+
+ /**
+ * Converts a string field from a PIM Contact Item to a CParserVCard.
+ * 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,
+ CParserVCard& aParser,
+ TPIMContactField aField,
+ TInt aIndex);
+
+ /**
+ * Converts a string field from a vCard to a PIM Contact Item.
+ *
+ * @param aProperty property to convert
+ * @param aItem item to write the field to
+ *
+ */
+ void ConvertStringPropertyL(
+ const CPIMParserProperty& aProperty,
+ CPIMContactItem& aItem);
+
+ /**
+ * Converts a photo field from a PIM Contact Item to a CParserVCard.
+ * 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 ConvertPhotoFieldL(
+ const CPIMItem& aItem,
+ CParserVCard& aParser,
+ TPIMContactField aField,
+ TInt aIndex);
+
+ /**
+ * Inserts a PHOTO property from a vCard to a PIM Contact Item as a
+ * binary field
+ *
+ * @param aProperty property to convert
+ * @param aItem item to write the field to
+ *
+ */
+ void ConvertPhotoPropertyL(
+ const CPIMParserProperty& aProperty,
+ CPIMContactItem& aItem);
+
+ /**
+ * Converts a class field from a PIM Contact Item to a CParserVCard.
+ * 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,
+ CParserVCard& aParser,
+ TPIMContactField aField,
+ TInt aIndex);
+
+ /**
+ * Inserts a CLASS property from a vCard to a PIM Contact Item as a
+ * integer field
+ *
+ * @param aProperty property to convert
+ * @param aItem item to write the field to
+ *
+ */
+ void ConvertClassPropertyL(
+ const CPIMParserProperty& aProperty,
+ CPIMContactItem& aItem);
+
+ /**
+ * Converts organisational fields from a PIM Contact Item to a
+ * CParserVCard. 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 ConvertOrganisationalFieldsL(
+ const CPIMItem& aItem,
+ CParserVCard& aParser,
+ TPIMContactField aField,
+ TInt aIndex);
+
+ /**
+ * Converts vCard name readings to a PIM item name array elements
+ *
+ * @param aProperty vCard property value
+ * @param aItem Contact List item
+ * @param aNameArrayElementIndex Index of this element
+ */
+ void ConvertNameReadingFieldL(
+ const CPIMParserProperty& aProperty,
+ CPIMContactItem& aItem);
+
+ /**
+ * Adds a new property to the vCard parser
+ * Note that property value and array of params are popped
+ * from the cleanup stack inside this function
+ *
+ * @param aPropertyValue Property value for the vCard 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 aArrayOfParams Parameter array. This can be NULL and must be
+ * pushed to the cleanup stack before this function call
+ * @param aParser VCard parser into which the new property is pushed
+ */
+ void AddPropertyToParserL(
+ CParserPropertyValue* aPropertyValue,
+ const TDesC8& aPropertyName,
+ CPIMVCardParserParamArray* aArrayOfParams,
+ CParserVCard& aParser);
+
+private: // data
+
+ // Validates contacts
+ const CPIMContactValidator& iContactValidator;
+
+};
+
+#endif // CPIMCARDPROPERTYCONVERTER_H
+
+// End of file