diff -r 514d98f21c43 -r 4ea6f81c838a mulwidgets/muldatamodel/src/mulvisualitem.cpp --- a/mulwidgets/muldatamodel/src/mulvisualitem.cpp Mon Jun 21 16:15:51 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,374 +0,0 @@ -/* -* 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 -* -*/ - - -#include - -#include -#include - -#include -#include - -#include // for Pow function -#include "mul/mulmodelutility.h" - -using namespace osncore; -using namespace std; - -namespace Alf - { -// --------------------------------------------------------------------------- -// Defination of class MulAttribute -// --------------------------------------------------------------------------- -// -class MulVisualItem::MulAttribute - { -public: //Constructor and destructor - - /** - * C++ constructor. - */ - MulAttribute():mValue(NULL),mFlag(0) - { - } - - /** - * C++ constructor. - * - * @param aValue value of the attribute - * @param aAttributeFlags property of this attribute - */ - MulAttribute( IMulVariantType* aValue, int aAttributeFlags = 0 ) - { - mValue = aValue; - mFlag = aAttributeFlags; - } - - /** - * Copy constructor. - * - * @param aAttribute existing attribute - */ - MulAttribute( const MulAttribute& aAttribute ) - { - mValue = aAttribute.mValue->Clone().release(); - mFlag = aAttribute.mFlag; - } - - /** - * Destructor. - */ - ~MulAttribute() - { - delete mValue; - } - -public: //data - - IMulVariantType* mValue ; //own - int mFlag ; - - }; - -// --------------------------------------------------------------------------- -// Constructor -// --------------------------------------------------------------------------- -// -OSN_EXPORT MulVisualItem::MulVisualItem( ) - { - // Clearing dirty bit flags to 0; - mBitAttrFlag1 = 0; - mBitAttrFlag2 = 0; - } - -// --------------------------------------------------------------------------- -// Copy Constructor -// --------------------------------------------------------------------------- -// -OSN_EXPORT MulVisualItem::MulVisualItem( const MulVisualItem& aVisualItem ) - { - map mapToCopy = aVisualItem.mVisualItem; - map::iterator itr; - for( itr = mapToCopy.begin(); itr!= mapToCopy.end(); ++itr ) - { - mVisualItem[itr->first] = new (EMM) MulAttribute( *itr->second ); - } - mBitAttrFlag1 = aVisualItem.mBitAttrFlag1; - mBitAttrFlag2 = aVisualItem.mBitAttrFlag2; - } - -// --------------------------------------------------------------------------- -// Destructor -// --------------------------------------------------------------------------- -// -OSN_EXPORT MulVisualItem::~MulVisualItem() - { - map::iterator itr; - for( itr = mVisualItem.begin(); itr!= mVisualItem.end(); ++itr ) - { - delete itr->second; - itr->second = NULL; - } - mVisualItem.clear(); - } - -// --------------------------------------------------------------------------- -// Add new attributes to visual item -// --------------------------------------------------------------------------- -// -//OSN_EXPORT void MulVisualItem::SetAttribute( mulvisualitem::TVisualAttribute aName, -// const UString& aValue, int aAttributeFlags ) -// { -// auto_ptr variantdata(new (EMM) MulVariantType( aValue )); -// -// SetAttribute( aName, variantdata.release(),aAttributeFlags,EDoesOwn); -// } - -// --------------------------------------------------------------------------- -// Add new attributes to visual item -// --------------------------------------------------------------------------- -// -OSN_EXPORT void MulVisualItem::SetAttribute( mulvisualitem::TVisualAttribute aName, - const TDesC& aValue, int aAttributeFlags ) - { - auto_ptr variantdata(new (EMM) MulVariantType( aValue )); - - SetAttribute( aName, variantdata.release(),aAttributeFlags,EDoesOwn); - } - - -// --------------------------------------------------------------------------- -// Add new attributes to visual item -// --------------------------------------------------------------------------- -// -OSN_EXPORT void MulVisualItem::SetAttribute( mulvisualitem::TVisualAttribute aName, - int aValue,int aAttributeFlags ) - { - auto_ptr variantdata(new ( EMM ) MulVariantType( aValue )); - - SetAttribute(aName,variantdata.release(),aAttributeFlags,EDoesOwn); - } - - -// --------------------------------------------------------------------------- -// Add new attributes to visual item -// --------------------------------------------------------------------------- -// -OSN_EXPORT void MulVisualItem::SetAttribute( mulvisualitem::TVisualAttribute aName, IMulVariantType* aValue, - int aAttributeFlags , - TAttributeOwnership /*aAttributeOwership*/ ) - { - map::iterator findIter = mVisualItem.find( aName ); - if( findIter != mVisualItem.end() ) - { - delete findIter->second; - findIter->second = NULL; - mVisualItem.erase( aName ); - } - mVisualItem[aName] = new (EMM) MulAttribute(aValue,aAttributeFlags ); - SetDirty(aName, true); - } - - -// --------------------------------------------------------------------------- -// Is the input attribute dirty, to be queried before a redraw -// --------------------------------------------------------------------------- -// -OSN_EXPORT bool MulVisualItem::IsDirty(mulvisualitem::TVisualAttribute aAttr) const -{ - int i = (int)aAttr; - TReal base = 2.0; - TReal r = 0.0; - TReal val = 0.0; - TInt err = KErrNone; - - // If mBitAttrflag is binary 101, AND'ing it with 100(attribute 3) will - // set 100 to return true for attribute 3 being dirty - - // if attribute index <18 check against mBitAttrFlag1, else check - // against mBitAttrFlag2 - if(i < 18) - { - val = i; - err = Math::Pow(r, base, val); - if(KErrNone != err) - return true; - - return mBitAttrFlag1 & (int)r; - } - else - { - val = (int)(mulvisualitem::KMul_n) - i; - err = Math::Pow(r, base, val); - if(KErrNone != err) - return true; - - return mBitAttrFlag2 & (int)r; - } - -} - - -// --------------------------------------------------------------------------- -// Set the attribute as dirty in this Visual item based on input flag -// --------------------------------------------------------------------------- -// -void MulVisualItem::SetDirty(mulvisualitem::TVisualAttribute aAttr, bool aDirty) -{ - int i = (int)aAttr; - TReal base = 2.0; - TReal r = 0.0; - TReal val = i; - TInt err = KErrNone; - // If mBitAttrflag is binary 001, OR'ing it with 100(attribute 3) will - // set 101 to set bit for attribute 3 as 1 in dirty flag - if(aDirty) - { - // if attribute index <18 operate on mBitAttrFlag1 - // else operate against mBitAttrFlag1 - if(i < 18) - { - err = Math::Pow(r,base,val); - mBitAttrFlag1 |= (int)r; - } - else - { - err = Math::Pow(r,base,(TReal)((int)(mulvisualitem::KMul_n) - i)); - mBitAttrFlag2 |= (int)r; - } - } - else - { - // if attribute index <18 operate on mBitAttrFlag1 - // else operate against mBitAttrFlag1 - if(i < 18) - { - err = Math::Pow(r,base,val); - mBitAttrFlag1 &= ~(int)r; - } - else - { - err = Math::Pow(r, base,(TReal)((int)(mulvisualitem::KMul_n) - i)); - mBitAttrFlag2 &= ~(int)r; - } - } - if(KErrNone != err) - throw std::invalid_argument("Error setting dirty flag for attribute"); -} - - -// --------------------------------------------------------------------------- -// ResetDirtyAttribute -// --------------------------------------------------------------------------- -// -void MulVisualItem::ResetDirtyAttribute(const MulVisualItem& aVisualItem) -{ - mBitAttrFlag1 = aVisualItem.mBitAttrFlag1; - mBitAttrFlag2 = aVisualItem.mBitAttrFlag2; -} -// --------------------------------------------------------------------------- -// Attribute -// --------------------------------------------------------------------------- -// -OSN_EXPORT IMulVariantType* MulVisualItem::Attribute( mulvisualitem::TVisualAttribute aName ) const - { - map::const_iterator findIter = mVisualItem.find( aName ); - if( findIter != mVisualItem.end() ) - { - MulAttribute* attribute = findIter->second; - IMulVariantType* attributeValue = attribute->mValue; - return attributeValue; - } - else - { - //throw std::invalid_argument("Invalid attribute name."); - return NULL; - } - } - -// --------------------------------------------------------------------------- -// AttributeAsInt -// --------------------------------------------------------------------------- -// -OSN_EXPORT int MulVisualItem::AttributeAsInt( mulvisualitem::TVisualAttribute aName ) const - { - IMulVariantType* attributeValue = Attribute(aName); - if( attributeValue ) - { - return attributeValue->integer(); - } - throw std::invalid_argument("Invalid attribute name."); - } - -// --------------------------------------------------------------------------- -// AttributeAsString -// --------------------------------------------------------------------------- -// -OSN_EXPORT const TDesC& MulVisualItem::AttributeAsString( mulvisualitem::TVisualAttribute aName ) const - { - IMulVariantType* attributeValue = Attribute(aName); - if( attributeValue ) - { - return attributeValue->DesC(); - } - throw std::invalid_argument("Invalid attribute name."); - } - -// --------------------------------------------------------------------------- -// ExistingAttributes -// --------------------------------------------------------------------------- -// -OSN_EXPORT const std::vector MulVisualItem::Attributes() const - { - map::const_iterator itr; - std::vector attributesName; - for( itr = mVisualItem.begin(); itr!= mVisualItem.end(); ++itr ) - { - attributesName.push_back( itr->first ); - } - return attributesName; - } - -// --------------------------------------------------------------------------- -// Flag -// --------------------------------------------------------------------------- -// -int MulVisualItem::Flag( mulvisualitem::TVisualAttribute aName ) - { - MulAttribute* attribute = mVisualItem.find( aName )->second; - return attribute->mFlag; - } - -// --------------------------------------------------------------------------- -// RemoveAttribute -// --------------------------------------------------------------------------- -// -void MulVisualItem::RemoveAttribute( mulvisualitem::TVisualAttribute aName ) - { - map::iterator findIter = mVisualItem.find( aName ); - if( findIter != mVisualItem.end() ) - { - delete findIter->second; - findIter->second = NULL; - mVisualItem.erase( aName ); - } - } - - }// namespace Alf - -//End of file