widgetmodel/alfwidgetmodel/src/alfanchorlayoutattributesetter.cpp
changeset 17 3eca7e70b1b8
parent 3 4526337fb576
--- a/widgetmodel/alfwidgetmodel/src/alfanchorlayoutattributesetter.cpp	Tue Feb 02 00:28:09 2010 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,457 +0,0 @@
-/*
-* Copyright (c) 2007 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:   Implements attributesetters for anchorlayout.
-*
-*/
-
-
-
-//includes
-
-//widget model includes
-#include "alf/alfattributecontainer.h"
-#include "alf/alfattributevaluetype.h"
-#include "alf/alfattribute.h"
-#include "alf/alfanchorlayoutattributesetter.h"
-#include <alf/alfvisualexception.h>
-#include <alf/alfdataexception.h>
-#include <alf/alfattributeexception.h>
-
-
-//osn includes
-#include <osn/ustring.h>
-
-//alf includes
-#include <alf/alfenv.h>
-#include <alf/alfanchorlayout.h>
-#include <alf/alftexture.h>
-#include <alf/alfeventhandler.h>
-#include <alf/alfevent.h>
-
-//dui includes
-#include "alf/attrproperty.h"
-
-//other includes
-#include <libc/string.h>
-#include <utf.h>
-
-
-
-//namespaces
-
-using namespace osncore;
-
-using namespace duiuimodel::anchorlayoutinput;
-
-using namespace duiuimodel::layoutattributes;
-
-using namespace duiuimodel::anchor;
-
-using namespace duiuimodel::metric;
-
-namespace Alf
-	{
-
-bool isMultivalueDataAchment ( TAlfAnchorAttachmentOrigin val )
-	{
-	return ( val == EAlfAnchorAttachmentOriginNone||
-			 val == EAlfAnchorAttachmentOriginTopLeft ||
-	         val == EAlfAnchorAttachmentOriginTopCenter ||
-	         val == EAlfAnchorAttachmentOriginTopRight ||
-	         val == EAlfAnchorAttachmentOriginCenterLeft ||
-	         val == EAlfAnchorAttachmentOriginCenter ||
-	         val == EAlfAnchorAttachmentOriginCenterRight ||
-	         val == EAlfAnchorAttachmentOriginBottomLeft ||
-	         val == EAlfAnchorAttachmentOriginBottomCenter ||
-	         val == EAlfAnchorAttachmentOriginBottomRight );
-	}
-
-typedef void ( *pFunc ) ( AlfContainer* aCont, AlfAttribute* aAttrib, IAlfMap* aData );
-
-void addToAnchortypecont ( AlfContainer* aCont, AlfAttribute* aAttrib, IAlfMap* aData )
-	{
-
-	if ( aData )
-		{
-		IAlfVariantType* dataX = aData->item ( UString(aAttrib->getDataField() ));
-
-		if ( dataX && dataX->type() == IAlfVariantType::EInt )
-			{
-			aCont->addItem ( new ( EMM ) AlfVariantType ( dataX->integer() ) );
-			}
-		}
-	else
-		{
-		aCont->addItem ( new ( EMM ) AlfVariantType ( aAttrib->intValue() ) );
-		}
-
-	}
-
-void addToAttachmentcont ( AlfContainer* aCont, AlfAttribute* aAttrib, IAlfMap* aData )
-	{
-
-	if ( aData )
-		{
-		IAlfVariantType* dataX = aData->item ( UString(aAttrib->getDataField()));
-
-		if ( dataX && dataX->type() == IAlfVariantType::EInt )
-			{
-			aCont->addItem ( new ( EMM ) AlfVariantType ( dataX->integer() ) );
-			}
-		}
-	else
-		{
-		aCont->addItem ( new ( EMM ) AlfVariantType ( aAttrib->intValue() ) );
-		}
-	}
-
-void addToMagnitudecont ( AlfContainer* aCont, AlfAttribute* aAttrib, IAlfMap* aData )
-	{
-
-	if ( aData )
-		{
-		IAlfVariantType* dataX = aData->item ( UString(aAttrib->getDataField()) );
-
-		if ( dataX != NULL && dataX->type() == IAlfVariantType::EMap )
-			{
-			IAlfVariantType* valueX = dataX->map()->item ( UString("value"));
-			IAlfVariantType* unitX = dataX->map()->item ( UString("unit"));
-			auto_ptr<AlfContainer> value ( new ( EMM ) AlfContainer() );
-			auto_ptr<AlfVariantType> vtype1(new ( EMM ) AlfVariantType ( valueX->real() ));
-			value->addItem ( vtype1.get() );
-			vtype1.release();
-			auto_ptr<AlfVariantType> vtype2(new ( EMM ) AlfVariantType ( unitX->integer() ));
-			value->addItem ( vtype2.get() );
-			vtype2.release();
-			aCont->addItem ( value.release() );
-
-			}
-		else if ( dataX != NULL && dataX->type() == IAlfVariantType::EReal )
-			{
-			auto_ptr<AlfContainer> value ( new ( EMM ) AlfContainer() );
-			auto_ptr<AlfVariantType> vtype1(new ( EMM ) AlfVariantType ( dataX->real() ));
-			value->addItem ( vtype1.get() );
-			vtype1.release();
-			auto_ptr<AlfVariantType> vtype2( new ( EMM ) AlfVariantType ( aAttrib->unit() ) );
-			
-			value->addItem (vtype2.get());
-			vtype2.release();
-			aCont->addItem ( value.release() );
-			}
-		}
-	else
-		{
-		auto_ptr<AlfContainer> value ( new ( EMM ) AlfContainer() );
-		auto_ptr<AlfVariantType> vtype1( new ( EMM ) AlfVariantType ( aAttrib->realValue() ) );
-		value->addItem (vtype1.get());
-		vtype1.release();
-		auto_ptr<AlfVariantType> vtype2( new ( EMM ) AlfVariantType ( aAttrib->unit() ) );
-		
-		value->addItem (vtype2.get());
-		vtype2.release();
-		aCont->addItem ( value.release() );
-
-		}
-
-	}
-
-void addToTextstylecont ( AlfContainer* /*aCont*/, AlfAttribute* /*aAttrib*/, IAlfMap* /*aData*/ )
-	{
-	}
-
-struct anchormap
-	{
-	const char* name;
-	pFunc addToContainer;
-	AlfContainer* pData;
-	};
-
-// ======== MEMBER FUNCTIONS ========
-
-// ---------------------------------------------------------------------------
-// Constructor.
-// ---------------------------------------------------------------------------
-//
-OSN_EXPORT AlfAnchorLayoutAttributeSetter::AlfAnchorLayoutAttributeSetter()
-	{
-	}
-
-// ---------------------------------------------------------------------------
-// Destructor.
-// ---------------------------------------------------------------------------
-//
-OSN_EXPORT AlfAnchorLayoutAttributeSetter::~AlfAnchorLayoutAttributeSetter()
-	{
-	}
-	
-// ---------------------------------------------------------------------------
-// Sets Attribute Value. Delegates based on attribute Category.
-// ---------------------------------------------------------------------------
-//
-OSN_EXPORT void AlfAnchorLayoutAttributeSetter::setAttributeValue (
-    CAlfVisual &aVisual,
-    AlfAttributeContainer* aContainer,
-    IAlfMap* aData )
-	{
-	
-	CAlfAnchorLayout* layout = dynamic_cast<CAlfAnchorLayout*> ( &aVisual );
-
-	if ( !layout )
-		{
-		ALF_THROW ( AlfVisualException, EInvalidVisual, 
-		    "AlfAnchorLayoutAttributeSetter" )
-		}
-		
-    AlfCommonLayoutAttributeSetter::setAttributeValue(aVisual, 
-        aContainer, aData);
-	}
-	
-
-// ---------------------------------------------------------------------------
-// Deprecated
-// ---------------------------------------------------------------------------
-//
-OSN_EXPORT TAlfCommand* AlfAnchorLayoutAttributeSetter::createCommand ( CAlfVisual& /*aVisual*/,
-        AlfAttributeContainer* /*aContainer*/, IAlfMap* /*aData*/,
-        int /*aTransitionTime*/, CAlfVisual* /*aRefVisual*/ )
-	{
-	//deprecated
-	TAlfCommand* cmd = NULL;
-	return cmd;
-	}
-
-// ---------------------------------------------------------------------------
-// Sends a command to Env
-// ---------------------------------------------------------------------------
-//
-OSN_EXPORT void AlfAnchorLayoutAttributeSetter::createAndSendCommands (
-    CAlfVisual& aVisual,
-    AlfAttributeContainer* aContainer,
-    CAlfVisual* aRefVisual )
-	{
-	//no animatable attributes in grid layout.
-	AlfCommonLayoutAttributeSetter::createAndSendCommands ( aVisual, aContainer, aRefVisual );
-	}
-
-// ---------------------------------------------------------------------------
-// Sets dynamic attributes to visual
-// ---------------------------------------------------------------------------
-//
-void AlfAnchorLayoutAttributeSetter::handleDynamicAttribute ( CAlfVisual &aVisual, AlfAttribute& aAttr, AlfAttributeContainer& aContainer )
-	{
-	//no dynamic attributes in anchor layout.
-	AlfCommonLayoutAttributeSetter::handleDynamicAttribute(aVisual, aAttr, aContainer);
-	}
-	
-// ---------------------------------------------------------------------------
-// Sets static attributes to visual
-// ---------------------------------------------------------------------------
-//		
-void AlfAnchorLayoutAttributeSetter::handleStaticAttribute ( 
-    CAlfVisual &aVisual, AlfAttribute& aAttr, AlfAttributeContainer& aContainer )
-    {
-    if (!doHandleStaticAttribute(aVisual, aAttr, aContainer, NULL))
-        {
-        AlfCommonLayoutAttributeSetter::handleStaticAttribute(aVisual, aAttr, aContainer);
-        }
-    }
-
-// ---------------------------------------------------------------------------
-// Sets static attributes to visual
-// ---------------------------------------------------------------------------
-//
-bool AlfAnchorLayoutAttributeSetter::doHandleStaticAttribute( CAlfVisual &aVisual, 
-    AlfAttribute& aAttr, AlfAttributeContainer& aContainer, IAlfMap* aData )
-	{
-    bool handled = true;
-	const char* attrName = aAttr.name();
-	CAlfAnchorLayout* layout = dynamic_cast<CAlfAnchorLayout*> ( &aVisual );
-	if(!layout)
-	    {
-	    return false;
-	    }
-
-	if ( !strcmp ( attrName, KChildOrdinal )||!strcmp ( attrName, KAttachmentOrdinal ) 
-			|| !strcmp ( attrName, KAnchorType )||!strcmp ( attrName, KAttachmentOrigin )
-			||!strcmp ( attrName, KMagnitude )||!strcmp ( attrName, KTextStyleId ) )
-		{
-		AlfAttribute& attachmentordinal = aContainer.getAttributeByName ( KAttachmentOrdinal );
-		AlfAttribute& aAttrChildOrdinal = aContainer.getAttributeByName ( KChildOrdinal );
-		float ordianal=0;
-		float attachordinalval=-1;
-		if(aData)
-			{
-			IAlfVariantType* data = aData->item ( UString(aAttrChildOrdinal.getDataField()) );
-
-			if ( data && data->type() == IAlfVariantType::EReal )
-				{
-					ordianal=data->real();	
-				}
-			data = aData->item ( UString(attachmentordinal.getDataField()) );
-			if ( data && data->type() == IAlfVariantType::EReal )
-				{
-					attachordinalval=data->real();	
-				}
-			}
-		else
-			{
-			ordianal=aAttrChildOrdinal.realValue();
-			attachordinalval=attachmentordinal.realValue();
-			}
-		auto_ptr<AlfContainer> anchortypecont ( new ( EMM ) AlfContainer() );
-		auto_ptr<AlfContainer> attachmentorigincont ( new ( EMM ) AlfContainer() );
-		auto_ptr<AlfContainer> magnitudecont ( new ( EMM ) AlfContainer() );
-		auto_ptr<AlfContainer> textstyleidcont ( new ( EMM ) AlfContainer() );
-
-		anchormap maptable[] =
-			{
-			{KAnchorType, addToAnchortypecont, NULL},
-			{KAttachmentOrigin, addToAttachmentcont, NULL},
-			{KMagnitude, addToMagnitudecont, NULL},
-			{KTextStyleId, addToTextstylecont, NULL}
-			};
-		unsigned int tableCount = sizeof ( maptable ) / sizeof ( anchormap );
-		maptable[0].pData = anchortypecont.get();
-		maptable[1].pData = attachmentorigincont.get();
-		maptable[2].pData = magnitudecont.get();
-		maptable[3].pData = textstyleidcont.get();
-
-		unsigned int attrCount = aContainer.attributeCount();
-
-		for ( int i = 0;i < attrCount;i++ )
-			{
-			for ( int j = 0;j < tableCount;j++ )
-				{
-				if ( !strcmp ( maptable[j].name, aContainer.getAttribute ( i ).name() ) )
-					{
-					maptable[j].addToContainer ( maptable[j].pData, &aContainer.getAttribute ( i ), aData );
-					aContainer.getAttribute ( i ).setDirty(false);
-					}
-				}
-			}
-
-		unsigned int totalApitocall = attachmentorigincont->count();
-
-		unsigned int magnitudeindex = 0;
-
-		for ( int counter = 0;counter < totalApitocall;counter++ )
-			{
-			IAlfVariantType* Origin = attachmentorigincont->item ( counter );
-			TAlfAnchorAttachmentOrigin value = static_cast<TAlfAnchorAttachmentOrigin> ( Origin->integer() );
-
-			if ( isMultivalueDataAchment ( value ) )
-				{
-				IAlfVariantType* aType = anchortypecont->item ( counter );
-				TAlfAnchorType type = static_cast<TAlfAnchorType> ( aType->integer() );
-
-				if ( type == EAlfAnchorTypeNone )
-					{
-					IAlfContainer* magCont1 = static_cast<IAlfContainer*> ( magnitudecont->item ( magnitudeindex ) );
-					IAlfContainer* magCont2 = static_cast<IAlfContainer*> ( magnitudecont->item ( magnitudeindex + 1 ) );
-					IAlfContainer* magCont3 = static_cast<IAlfContainer*> ( magnitudecont->item ( magnitudeindex + 2 ) );
-					IAlfContainer* magCont4 = static_cast<IAlfContainer*> ( magnitudecont->item ( magnitudeindex + 3 ) );
-
-					TAlfMetric metric1 ( magCont1->item ( 0 )->real(), magCont1->item ( 1 )->integer() );
-					TAlfMetric metric2 ( magCont2->item ( 0 )->real(), magCont2->item ( 1 )->integer() );
-					TAlfMetric metric3 ( magCont3->item ( 0 )->real(), magCont3->item ( 1 )->integer() );
-					TAlfMetric metric4 ( magCont4->item ( 0 )->real(), magCont4->item ( 1 )->integer() );
-					TAlfBoxMetric boxmetric ( metric1, metric2, metric3, metric4 );
-					int err=layout->Attach ( ordianal, boxmetric, value, attachordinalval );
-					if(err!=KErrNone)
-						{
-						ALF_THROW ( AlfVisualException, err, "Anchor Attach Failed" )
-						}
-					magnitudeindex += 4;
-					}
-				else
-					{
-					IAlfContainer* magCont1 = static_cast<IAlfContainer*> ( magnitudecont->item ( magnitudeindex ) );
-					IAlfContainer* magCont2 = static_cast<IAlfContainer*> ( magnitudecont->item ( magnitudeindex + 1 ) );
-
-					TAlfMetric metric1 ( magCont1->item ( 0 )->real(), magCont1->item ( 1 )->integer() );
-					TAlfMetric metric2 ( magCont2->item ( 0 )->real(), magCont2->item ( 1 )->integer() );
-
-
-
-					TAlfXYMetric xymetric ( metric1, metric2 );
-				
-					int err=layout->Attach ( ordianal, type, xymetric, value, attachordinalval );
-					if(err!=KErrNone)
-						{
-						ALF_THROW ( AlfVisualException, err, "Anchor Attach Failed" )
-						}
-
-					magnitudeindex += 2;
-					}
-				}
-			else
-				{
-				IAlfVariantType* typeVar = anchortypecont->item ( counter );
-				TAlfAnchorType type = static_cast<TAlfAnchorType> ( typeVar->integer() );
-				IAlfContainer* magCont1 = static_cast<IAlfContainer*> ( magnitudecont->item ( magnitudeindex ) );
-
-				TAlfMetric metric ( magCont1->item ( 0 )->real(), magCont1->item ( 1 )->integer() );
-
-
-				int err=layout->Attach ( ordianal, type, metric, value, attachordinalval );
-				if(err!=KErrNone)
-					{
-					ALF_THROW ( AlfVisualException, err, "Anchor Attach Failed" )
-					}
-
-				magnitudeindex++;
-				}
-			}
-			
-		attachmentordinal.setDirty(false);
-		aAttrChildOrdinal.setDirty(false);
-		}
-	else 
-		{
-		handled = false;
-		}
-		
-    return handled;
-	}
-
-
-// ---------------------------------------------------------------------------
-// Sets dynamic attributes to visual from data
-// ---------------------------------------------------------------------------
-//
-void AlfAnchorLayoutAttributeSetter::handleDynamicDataAttribute ( CAlfVisual &aVisual, AlfAttribute& aAttr, AlfAttributeContainer& aContainer, IAlfMap* aData )
-	{
-	AlfCommonLayoutAttributeSetter::handleDynamicDataAttribute ( aVisual, aAttr, aContainer, aData );
-	}
-
-// ---------------------------------------------------------------------------
-// Sets static attributes to visual  from data
-// ---------------------------------------------------------------------------
-//
-void AlfAnchorLayoutAttributeSetter::handleStaticDataAttribute ( CAlfVisual &aVisual, AlfAttribute& aAttr, AlfAttributeContainer& aContainer, IAlfMap* aData )
-	{
-	if (!doHandleStaticAttribute(aVisual, aAttr, aContainer, aData))
-	    {
-	    AlfCommonLayoutAttributeSetter::handleStaticDataAttribute(aVisual, aAttr, aContainer, aData);
-	    }
-	}
-
-	} // namespace Alf
-
-// End of file
-
-
-
-
-