mmuifw_plat/mul_datamodel_api/inc/mul/mulvisualitem.h
author Stefan Karlsson <stefan.karlsson@nokia.com>
Sat, 10 Apr 2010 13:41:29 +0100
branchCompilerCompatibility
changeset 15 9ffc8d0fb20a
parent 0 e83bab7cf002
permissions -rw-r--r--
Got rid of some trivial warnings (nested comments and tokens after #endif).

/*
* Copyright (c) 2007-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:  Visual Item class
 *
*/


#ifndef MULVISUALITEM_H
#define MULVISUALITEM_H

#include <osn/osndefines.h>
#include <osn/ustring.h>
#include <alf/alfvarianttype.h>
#include <memory>
#include <map>
#include <vector>
#include <e32cmn.h>

namespace osncore
    {
    class UString;
    }
using namespace osncore;
using namespace std;
    

namespace Alf
    {
    

//enum mulvisualitem
namespace mulvisualitem
    {
    
    enum TVisualAttribute
        {
        KMulIcon1 = 0,
        KMulIcon2 ,
        KMulIcon3 ,
        KMulTitle ,
        KMulTitle1 ,
        KMulTitle2 ,
        KMulDetail ,
        KMulDate ,
        KMulIndicator1 ,
        KMulIndicator2 ,
        KMulIndicator3 ,
        KMulIndicator4 ,
        KMulIndicator5,
        KMulIndicator6,
        KMulActionItem ,
        KMulEnabled ,
        KMulSoftkeyTitle ,
        KMulLatch ,
        KMulRead ,
        KMulInputText,
        KMulEmptyItem ,
        KVisualItemProperties,
        KVisualItemAttributes ,   
        KAttributeTemplate, 
        KMulMaxRange, 
		KMulMinRange,
		KMulTick,
		KMulPrimaryTick,
		KMulSecondaryTick, 
		KMulLeftText, 
		KMulRightText,  
		KMulCounter1,
		KMulCounter2,
		KMulImage,
		KMulPercent1,
		KMulPercent2,
		KMul_n,
        KLastAttribute = 100 // reserved 0 to 100
        };
    
    }//namespace mulvisualitem
    
/* Forward declarations*/
class IAlfMap;
class IAlfContainer;
class IMulVariantType;

/*! @class MulVisualItem
 *  @brief Client need to use this class to add data in data model.
 *
 *  Visual item is set of attributes corresponding to an item in the widget.
 *  The attributes added to visual item get visualized on the widget
 * 
 */  
class MulVisualItem
	{
private:

	class MulAttribute;
    		
public:

	/**
	 * Flags for attribute 
	 */
	enum TAttributeFlags
		{
		EDisposable = 0x01 // attribute with this flag on can be deleted from item is it is out of visible window
		};
		
	enum TAttributeOwnership
		{
		EDoesOwn = 0, //attribute is owned by model
		EDoesNotOwn	  //attribute is not owned by model
		};
	
public:	//Constructor and Dstructor
	
	/**
	 * C++ constructor.
	 */
	OSN_IMPORT MulVisualItem();
	
	/**
	 * C++ constructor.
	 */
	OSN_IMPORT MulVisualItem( const MulVisualItem& aVisualData );
	
	 /**
 	 * Destructor.
 	 */
	OSN_IMPORT ~MulVisualItem();
   
public: // New mehtod

	/**
	 * Add new attribute to visual item
	 * 
	 * @param aName name of attribute
	 * @param aValue value of attribute
	 * @param aAttributeFlags property of this attribute
	 */
	//OSN_IMPORT void SetAttribute( mulvisualitem::TVisualAttribute aName, const UString& aValue,int aAttributeFlags = 0 );
	
	/**
	 * Add new attribute to visual item
	 * 
	 * @param aName name of attribute
	 * @param aValue value of attribute
	 * @param aAttributeFlags property of this attribute
	 */
	OSN_IMPORT void SetAttribute( mulvisualitem::TVisualAttribute aName, int aValue,int aAttributeFlags = 0 );
	
   /**
     * Add new attribute to visual item
     * 
     * @param aName name of attribute
     * @param aValue value of attribute
     * @param aAttributeFlags property of this attribute
     */
    OSN_IMPORT void SetAttribute( mulvisualitem::TVisualAttribute aName, const TDesC& aValue ,int aAttributeFlags = 0 );
	
	/**
	 * Add new attribute to visual item
	 * 
	 * @param aName name of attribute
	 * @param aValue value of attribute 
	 * @param aAttributeFlags property of this attribute
	 * @param aAttributeOwership If the value is EDoesOwn then the ownership 
	 *  of the attribute transfered to the visual item else not.
	 */
	OSN_IMPORT void SetAttribute( mulvisualitem::TVisualAttribute aName, IMulVariantType* aValue, 
								  int aAttributeFlags = 0,TAttributeOwnership aAttributeOwership = EDoesOwn );
	
	/**
	 * Return Value of specified attribute
	 * 
	 * @param aName name of attribute need to retrived
	 * @return Value of attribute
	 */
	OSN_IMPORT IMulVariantType* Attribute( mulvisualitem::TVisualAttribute aName ) const;
	
	/**
	 * Return Value of specified attribute as integer
	 * 
	 * @param aName name of attribute need to retrived
	 * @return Value of attribute
	 */
	OSN_IMPORT int AttributeAsInt( mulvisualitem::TVisualAttribute aName ) const;
	
	/**
	 * Return Value of specified attribute as String
	 * 
	 * @param aName name of attribute need to retrived
	 * @return Value of attribute
	 */
	OSN_IMPORT const TDesC& AttributeAsString( mulvisualitem::TVisualAttribute aName ) const;
	  
	 /**
	  * Return the existing attributes of the visual item
	  * @return Vector of the names of the existing attributes
	  */
	 OSN_IMPORT const std::vector<mulvisualitem::TVisualAttribute> Attributes() const;


	 /**
	  * Return the bool value if attribute is dirty(updated and not redrawn)
	  * @return bool Value of attribute dirty status
	  */
	 OSN_IMPORT bool IsDirty( mulvisualitem::TVisualAttribute aAttr ) const;
	 
	  
	  /**
	  * Return the flag of the attributes 
	  * @param aName name of attribute need to retrived
	  * @return Value of flag of the attribute 
	  */
	  int Flag( mulvisualitem::TVisualAttribute aName );
	   
	  /**
	   * Remove attribute from visual item - required by garbage collector
	   * 
	   * @param aName Attribute name to be removed
	   */
	  void RemoveAttribute( mulvisualitem::TVisualAttribute aName );

	 /**
	  * Sets the dirty flag for a Visual attribute
	  * @param aDirty sets dirty flag to true/false
	  * @return void
	  */
	 void SetDirty(mulvisualitem::TVisualAttribute aAttr, bool aDirty);
	 
	 
	 /**
	  * Resets the dirty flag for a Visual attribute from input Visual item
	  * @param const MulVisualItem& Visual item with input dirty flags
	  * @return void
	  */
	 void ResetDirtyAttribute(const MulVisualItem& aVisualItem);
	 
	  	 	  
private:

	std::map< mulvisualitem::TVisualAttribute, MulAttribute* > mVisualItem;
	// Attribute flags - indicates which attributes are dirty(need redrawing)
	// Using 2 attributes to store 36 attributes (refer TVisualAttribute)
	unsigned int mBitAttrFlag1;	// stores dirty bits of first 18 attributes
	unsigned int mBitAttrFlag2;	// stores dirty bits of second 18 attributes
	};
	
    } // namespace Alf	

#endif //MULVISUALITEM_H

//End of file