--- a/widgetmodel/alfwidgetmodel/src/alfanchorlayoutattributesetter.cpp Mon Jun 21 16:15:51 2010 +0300
+++ /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
-
-
-
-
-