--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/email/imum/Utils/Inc/ImumInSettingsDataAttribute.h Thu Dec 17 08:44:11 2009 +0200
@@ -0,0 +1,295 @@
+/*
+* Copyright (c) 2006 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: ImumInSettingsDataAttribute.h
+*
+*/
+
+
+#ifndef C_IMUMINSETTINGSDATAATTRIBUTE_H
+#define C_IMUMINSETTINGSDATAATTRIBUTE_H
+
+#include <e32base.h>
+
+/**
+ * Object with unique key ID to store anydata possible.
+ *
+ * @lib ImumUtils.lib
+ * @since S60 v3.2
+ */
+NONSHARABLE_CLASS( CImumInSettingsDataAttribute ) : public CBase
+ {
+public: // Constructors and destructor
+
+ /**
+ * Creates the attribute object.
+ *
+ * @since S60 v3.2
+ * @param aAttributeId Unique id of the attribute
+ * @param aAttributeType Type of the attribute
+ * @param aAttributeSize Size of the data
+ * @param aAttributeValue The actual value of the attribute
+ * @param aAttributeDefault The default value of the attribute
+ * @return Constructed object
+ * @see ImumInSettingsKeys.h
+ * @see ImumDaSettingsKeys.h
+ */
+ static CImumInSettingsDataAttribute* NewLC(
+ const TUint aAttributeId,
+ const TInt aAttributeType,
+ const TUint aAttributeSize,
+ const TAny* aAttributeValue,
+ const TAny* aAttributeDefault );
+
+ /**
+ * Creates the attribute object.
+ *
+ * @since S60 v3.2
+ * @param aAttributeId Unique id of the attribute
+ * @param aAttributeType Type of the attribute
+ * @param aAttributeSize Size of the data
+ * @param aAttributeValue The actual value of the attribute
+ * @param aAttributeDefault The default value of the attribute
+ * @return Constructed object
+ * @see ImumInSettingsKeys.h
+ * @see ImumDaSettingsKeys.h
+ */
+ static CImumInSettingsDataAttribute* NewL(
+ const TUint aAttributeId,
+ const TInt aAttributeType,
+ const TUint aAttributeSize,
+ const TAny* aAttributeValue,
+ const TAny* aAttributeDefault );
+
+ /**
+ * Destructor
+ *
+ * @since S60 v3.2
+ */
+ virtual ~CImumInSettingsDataAttribute();
+
+public: // New functions
+
+ /**
+ * Retrieves the stored value of the attribute.
+ *
+ * @since S60 v3.2
+ * @param aAttribute Return parameter to store the value.
+ * @type T The type of the attribute
+ * @return
+ */
+ template<class T>
+ inline void Value( T& aAttribute ) const;
+
+ /**
+ * Creates identical copy of the object
+ *
+ * @since S60 v3.2
+ * @return Identical copy of the object
+ */
+ CImumInSettingsDataAttribute* CloneL();
+
+ /**
+ * Copies content of the attribute.
+ *
+ * @since S60 v3.2
+ * @param aAttribute Attribute to be copied
+ */
+ void Copy(
+ const CImumInSettingsDataAttribute& aAttribute );
+
+ /**
+ * Resets the value to default.
+ *
+ * @since S60 v3.2
+ */
+ void Reset();
+
+ /**
+ * Compares objects.
+ *
+ * @since S60 v3.2
+ * @param aAttribute The attribute to be compared
+ * @return ETrue, when objects are matching
+ */
+ TBool operator==(
+ const CImumInSettingsDataAttribute& aAttribute );
+
+ /**
+ * Compares objects.
+ *
+ * @since S60 v3.2
+ * @param aAttribute The attribute to be compared
+ * @return ETrue, when objects are not matching
+ */
+ TBool operator!=(
+ const CImumInSettingsDataAttribute& aAttribute );
+
+ /**
+ * Sets the id of the attribute.
+ *
+ * @since S60 v3.2
+ * @param aId New unique ID
+ */
+ void SetId( const TUint aId );
+
+ /**
+ * Returns the unique Id of the key.
+ *
+ * @since S60 v3.2
+ * @return The id of the key
+ */
+ TUint Id() const;
+
+ /**
+ * Returns the type of the key.
+ *
+ * @since S60 v3.2
+ * @return The type of the key
+ */
+ TInt Type() const;
+
+ /**
+ * Method to compare id's of the to attributes. For RArrayPointer class.
+ *
+ * @since S60 v3.2
+ * @param aLeft Item for comparing
+ * @param aLeft Another item for comparing
+ * @return ETrue/EFalse depending if the ID matches
+ */
+ static TBool IdCompare(
+ const CImumInSettingsDataAttribute& aLeft,
+ const CImumInSettingsDataAttribute& aRight );
+
+protected: // Constructors
+
+ /**
+ * Default constructor for classCImumInSettingsDataAttribute
+ * @since S60 v3.2
+ * @return, Constructed object
+ */
+ CImumInSettingsDataAttribute();
+
+ /**
+ * Symbian 2-phase constructor
+ *
+ * @since S60 v3.2
+ * @param aAttributeId Unique id of the attribute
+ * @param aAttributeType Type of the attribute
+ * @param aAttributeSize Size of the data
+ * @param aAttributeValue The actual value of the attribute
+ * @param aAttributeDefault The default value of the attribute
+ * @see ImumInSettingsKeys.h
+ * @see ImumDaSettingsKeys.h
+ */
+ void ConstructL(
+ const TUint aAttributeId,
+ const TInt aAttributeType,
+ const TUint aAttributeSize,
+ const TAny* aAttribute,
+ const TAny* aAttributeDefault );
+
+private: // New functions
+
+ /**
+ * Deletes the text objects allocated by the class
+ *
+ * @since S60 v3.2
+ */
+ void DeleteText();
+
+ /**
+ * Deletes number objects allocated by the class
+ *
+ * @since S60 v3.2
+ * @param
+ */
+ template<class T>
+ inline void DeleteNumber();
+
+ /**
+ * Deletes any objects allocated by the attribute.
+ *
+ * @since S60 v3.2
+ */
+ void Cleanup();
+
+ /**
+ * Allocates memory from heap for the values
+ *
+ * @since S60 v3.2
+ * @template T type of the parameter
+ * @param aValue The actual value of the attribute
+ * @param aDefault The default value of the attibute
+ */
+ template<class T>
+ inline void DoAllocL(
+ const TAny* aValue,
+ const TAny* aDefault );
+
+ /**
+ * Allocates memory from heap for the values
+ *
+ * @since S60 v3.2
+ * @param aValue The actual value of the attribute
+ * @param aDefault The default value of the attibute
+ */
+ void AllocL(
+ const TAny* aValue,
+ const TAny* aDefault );
+
+ /**
+ * Sets all the values of the attribute
+ *
+ * @since S60 v3.2
+ * @param aAttributeId Unique id of the attribute
+ * @param aAttributeType Type of the attribute
+ * @param aAttributeSize Size of the data
+ * @param aAttributeValue The actual value of the attribute
+ * @param aAttributeDefault The default value of the attribute
+ * @see ImumInSettingsKeys.h
+ * @see ImumDaSettingsKeys.h
+ */
+ void SetAttributeL(
+ const TUint aAttributeId,
+ const TInt aAttributeType,
+ const TUint aAttributeSize,
+ const TAny* aAttributeValue,
+ const TAny* aAttributeDefault );
+
+ /**
+ * Logs the data in the attribute. Debug only.
+ *
+ * @since S60 v3.2
+ */
+ void Log() const;
+
+private: // Data
+
+ // Unique ID
+ TUint iId;
+ // Item type
+ TInt iType;
+ // Length of the item
+ TUint iSize;
+ // Owned: The value, of which type is defined by iType
+ TAny* iValue;
+ // Owned: Default value of the attribute
+ TAny* iDefault;
+ };
+
+#include "ImumInSettingsDataAttribute.inl"
+
+#endif // C_IMUMINSETTINGSDATAATTRIBUTE_H
+
+// End of File