videocollection/mpxmyvideoscollection/tsrc/ut_vcxmyvideosmdsdb/inc/mdeproperty.h
branchRCL_3
changeset 15 8f0df5c82986
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/videocollection/mpxmyvideoscollection/tsrc/ut_vcxmyvideosmdsdb/inc/mdeproperty.h	Tue May 25 12:44:54 2010 +0300
@@ -0,0 +1,332 @@
+/*
+* Copyright (c) 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:  ?Description
+*
+*/
+
+
+#ifndef __MDEPROPERTY_H__
+#define __MDEPROPERTY_H__
+
+#include <e32base.h>
+
+#include <mdeinstanceitem.h>
+
+
+/* Forward declarations. */
+class CMdEObject;
+class CMdEPropertyDef;
+class CMdCSerializationBuffer;
+
+/**
+ * Abstract base class for properties.
+ */
+NONSHARABLE_CLASS(CMdEProperty) : public CMdEInstanceItem
+	{
+	friend class CMdEObject;
+public:
+	/**
+	 * Destructor.
+	 */
+	virtual ~CMdEProperty();
+
+
+	/* Methods. */
+
+	/**
+	 * Constructs a new property.
+	 *
+	 * @param aObject owner object of property
+	 * @param aBuffer buffer where property was serialized
+	 * @return new numeric property
+	 */
+	static CMdEProperty* NewL( const CMdEObject& aObject, CMdCSerializationBuffer& aBuffer );
+
+	/**
+	 * Constructs a new property and leave it on the cleanup stack.
+	 *
+	 * @param aObject owner object of property
+	 * @param aBuffer buffer where property was serialized
+	 * @return new numeric property
+	 */
+	static CMdEProperty* NewLC( const CMdEObject& aObject, CMdCSerializationBuffer& aBuffer );
+
+	/**
+	 * Constructs a new property.
+	 *
+	 * @param aDef property definition
+	 * @param aObject owner object of property
+	 * @return new numeric property
+	 */
+    static CMdEProperty* NewL(const CMdEPropertyDef& aDef, const CMdEObject& aObject);
+    
+    CMdEProperty();
+
+	/**
+	 * Constructs a new property.
+	 *
+	 * @param aDef property definition
+	 * @param aObject owner object of property
+	 * @return new numeric property
+	 */
+	static CMdEProperty* NewLC(const CMdEPropertyDef& aDef, const CMdEObject& aObject);
+
+
+	/**
+	 * Returns the definition of the integer property.
+	 *
+	 * @return  property definition
+	 */
+	IMPORT_C const CMdEPropertyDef& Def() const;
+
+	/**
+	 * Returns the object which the property belongs to.
+	 *
+	 * @return  Object.
+	 */
+	IMPORT_C const CMdEObject& Object() const;
+
+	/**
+	 * @return ETrue if property was modified,
+	 *         EFalse otherwise
+	 */
+	IMPORT_C TBool Modified() const;
+
+	
+	/** value getters */
+
+	/**
+	 * Returns the TBool value of the property.
+	 * @return  value
+	 */
+	IMPORT_C TBool BoolValueL() const;
+
+	/**
+	 * Returns the TInt8 value of the property.
+	 * @return  value
+	 */
+	IMPORT_C TInt8 Int8ValueL() const;
+
+	/**
+	 * Returns the TUint8 value of the property.
+	 * @return  value
+	 */
+
+	IMPORT_C TUint8 Uint8ValueL() const;
+	
+	/**
+	 * Returns the TInt16 value of the property.
+	 * @return  value
+	 */
+	IMPORT_C TInt16 Int16ValueL() const;
+	
+	/**
+	 * Returns the TUint16 value of the property.
+	 * @return  value
+	 */
+	IMPORT_C TUint16 Uint16ValueL() const;
+	
+	/**
+	 * Returns the TInt32 value of the property.
+	 * @return  value
+	 */
+	IMPORT_C TInt32 Int32ValueL() const;
+	
+	/**
+	 * Returns the TUint32 value of the property.
+	 * @return  value
+	 */
+	IMPORT_C TUint32 Uint32ValueL() const;
+	
+	/**
+	 * Returns the TInt64 value of the property.
+	 * @return  value
+	 */
+	IMPORT_C TInt64 Int64ValueL() const;
+	
+	/**
+	 * Returns the TReal32 value of the property.
+	 * @return  value
+	 */
+	IMPORT_C TReal32 Real32ValueL() const;
+	
+	/**
+	 * Returns the TReal64 value of the property.
+	 * @return  value
+	 */
+	IMPORT_C TReal64 Real64ValueL() const;
+	
+	/**
+	 * Returns the TTime value of the property.
+	 * @return  value
+	 */
+	IMPORT_C TTime TimeValueL() const;
+
+	/**
+	 * Returns the text value of the property.
+	 *
+	 * @return  value
+	 */
+	IMPORT_C const TDesC& TextValueL() const;
+	
+
+	/** setter methods */
+	/**
+	 * Sets the TBool value of the property.
+	 * @param aValue       New value.
+	 */
+	IMPORT_C void SetBoolValueL(TBool aValue);
+
+	/**
+	 * Sets the TInt8 value of the property.
+	 * @param aValue       New value.
+	 */
+	IMPORT_C void SetInt8ValueL(TInt8 aValue);
+
+	/**
+	 * Sets the TUint8 value of the property.
+	 * @param aValue       New value.
+	 */
+	IMPORT_C void SetUint8ValueL(TUint8 aValue);
+
+	/**
+	 * Sets the TInt16 value of the property.
+	 * @param aValue       New value.
+	 */
+	IMPORT_C void SetInt16ValueL(TInt16 aValue);
+
+	/**
+	 * Sets the TUint16 value of the property.
+	 * @param aValue       New value.
+	 */
+	IMPORT_C void SetUint16ValueL(TUint16 aValue);
+
+	/**
+	 * Sets the TInt32 value of the property.
+	 * @param aValue       New value.
+	 */
+	IMPORT_C void SetInt32ValueL(TInt32 aValue);
+
+	/**
+	 * Sets the TUint32 value of the property.
+	 * @param aValue       New value.
+	 */
+	IMPORT_C void SetUint32ValueL(TUint32 aValue);
+
+	/**
+	 * Sets the TInt64 value of the property.
+	 * @param aValue       New value.
+	 */
+	IMPORT_C void SetInt64ValueL(TInt64 aValue);
+
+	/**
+	 * Sets the TReal32 value of the property.
+	 * @param aValue       New value.
+	 */
+	IMPORT_C void SetReal32ValueL(TReal32 aValue);
+
+	/**
+	 * Sets the TReal64 value of the property.
+	 * @param aValue       New value.
+	 */
+	IMPORT_C void SetReal64ValueL(TReal64 aValue);
+
+	/**
+	 * Sets the TTime value of the property.
+	 * @param aValue       New value.
+	 */
+	IMPORT_C void SetTimeValueL(const TTime& aValue);
+
+	/**
+	 * Sets the text value of the property.
+	 *
+	 * @param aValue       New value.
+	 */
+	IMPORT_C void SetTextValueL(const TDesC& aValue);
+
+	
+	/**
+	 * Return required size for property serialization
+	 *
+	 * @return size of serialized property
+	 */
+	TUint32 RequiredBufferSize() const;
+
+	/**
+	 * Serialize object
+	 *
+	 * @param aBuffer buffer where serialized object should go
+	 */
+	TMdCOffset SerializeL(CMdCSerializationBuffer& aBuffer, TMdCOffset aFreespaceOffset) const;
+	
+private:
+
+	TUint8 ModFlags() const;
+
+	void SetRemoved();
+	TBool Removed();
+
+	void ClearFlags();
+
+	void SetModified();
+
+
+	/* Constructors. */
+
+	/**
+	 * Constructor.
+	 *
+	 * @param aDef         Definition of the new property.	 
+	 * @param aObject object where this property belongs to.
+	 */
+	CMdEProperty(const CMdEPropertyDef& aDef, const CMdEObject& aObject);
+
+	/**
+	 * Second-phase constructor.
+	 *
+	 * @param aSource  Source of the new property.
+	 */
+	void BaseConstructL();
+
+
+	/* Methods. */
+
+	/**
+	 * Check if property has value is between min and max
+	 * and leave if not!
+	 */
+#ifdef _DEBUG
+	void CheckValueMinMaxL( const TMdCValueUnion& aValue ) const;
+#endif
+	
+	void DoSetTextValueL(const TDesC& aValue);
+
+	TMdEInstanceType InstanceType() const;
+
+protected:
+	/** property modifications flags */
+	TUint8 iModFlags;
+
+private:
+	/** Property definition. */
+	const CMdEPropertyDef& iDef;
+
+	/** Object this property belongs to. */
+	const CMdEObject& iObject;
+
+	/** Value. */
+	TMdCValueUnion iValue;
+	};
+
+#endif  // __MDEPROPERTY_H__