skins/AknSkins/src/AknsItemData2.cpp
changeset 0 05e9090e2422
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/skins/AknSkins/src/AknsItemData2.cpp	Thu Dec 17 09:14:12 2009 +0200
@@ -0,0 +1,1088 @@
+/*
+* Copyright (c) 2004-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:  Defines public item data classes (extension).
+*
+*/
+
+
+// INCLUDE FILES
+
+#include <AknsItemData.h>
+
+#include "AknsRlCommand.h"
+#include "AknsAlDataAccess.h"
+
+#include "AknsDebug.h"
+
+// CONSTANTS
+static const TInt KDefaultAnimationMinimumInterval = 10; // Milliseconds
+
+// INTERNAL CLASSES
+
+NONSHARABLE_CLASS(CAknsEffectParameter) : public CBase
+    {
+    public: // Construction and destruction
+        CAknsEffectParameter()
+            {
+            }
+
+        virtual ~CAknsEffectParameter()
+            {
+            delete iName;
+            delete iBuffer;
+            }
+
+    public: // Setters and getters
+        void SetDataL( const TAknsRlParameterData& aData )
+            {
+            HBufC* temp = aData.iName->AllocL();
+            delete iName;
+            iName = temp;
+            temp = NULL;
+
+            delete iBuffer;
+            iBuffer = NULL;
+
+            iType = aData.iType;
+
+            switch( aData.iType )
+                {
+                case EAknsRlParameterTypeNumber:
+                    iNumber = aData.iNumber;
+                    break;
+                case EAknsRlParameterTypeString:
+                    iBuffer = aData.iString->AllocL();
+                    break;
+                case EAknsRlParameterTypeGraphics:
+                    iBuffer = aData.iGfx->iFilename->AllocL();
+                    iGfx.iFilename = iBuffer;
+                    iGfx.iIndex = aData.iGfx->iIndex;
+                    iGfx.iMaskIndex = aData.iGfx->iMaskIndex;
+                    break;
+                }
+            }
+
+        void GetData( TAknsRlParameterData& aData )
+            {
+            aData.iName = iName;
+            aData.iType = iType;
+
+            switch( iType )
+                {
+                case EAknsRlParameterTypeNumber:
+                    aData.iNumber = iNumber;
+                    break;
+                case EAknsRlParameterTypeString:
+                    aData.iString = iBuffer;
+                    break;
+                case EAknsRlParameterTypeGraphics:
+                    aData.iGfx = &iGfx;
+                    break;
+                }
+            }
+
+    private: // Data
+        HBufC* iName;
+        TAknsRlParameterType iType;
+        HBufC* iBuffer;
+        TInt iNumber;
+        TAknsRlGraphicsParam iGfx;
+    };
+
+NONSHARABLE_CLASS(CAknsParameterIterator) : public CBase,
+    public MAknsRlParameterIterator
+    {
+    public: // Construction and destruction
+        CAknsParameterIterator( RPointerArray<CAknsEffectParameter>* aArray )
+            : iNextIndex(0), iArray( aArray )
+            {
+            }
+        virtual ~CAknsParameterIterator()
+            {
+            }
+    public: // Methods
+        TBool HasNext()
+            {
+            if( !iArray ) return EFalse;
+            if( iNextIndex>=iArray->Count() ) return EFalse;
+            return ETrue;
+            }
+        const TAknsRlParameterData* NextL()
+            {
+            if( !HasNext() ) User::Leave( KErrArgument );
+            (*iArray)[iNextIndex++]->GetData( iCurData );
+            return &iCurData;
+            }
+    private: // Data
+        TAknsRlParameterData iCurData;
+        TInt iNextIndex;
+        RPointerArray<CAknsEffectParameter>* iArray;
+    };
+
+NONSHARABLE_CLASS(CAknsCommandIterator) : public CBase,
+    public MAknsRlCommandIterator
+    {
+    public: // Construction and destruction
+        CAknsCommandIterator( const RPointerArray<CAknsEffectCommand>* aArray )
+            : iNextIndex(0), iArray( aArray )
+            {
+            iCurData.iParamIterator = NULL;
+            }
+        virtual ~CAknsCommandIterator()
+            {
+            delete iCurData.iParamIterator;
+            }
+    public: // Methods
+        TBool HasNext()
+            {
+            if( !iArray ) return EFalse;
+            if( iNextIndex>=iArray->Count() ) return EFalse;
+            return ETrue;
+            }
+        const TAknsRlCommandData* NextL()
+            {
+            if( !HasNext() ) User::Leave( KErrArgument );
+
+            delete iCurData.iParamIterator;
+            iCurData.iParamIterator = NULL;
+
+            iCurData.iEffectUid = (*iArray)[iNextIndex]->EffectUid();
+            iCurData.iLayerConf = (*iArray)[iNextIndex]->LayerConf();
+            iCurData.iParamIterator =
+                (*iArray)[iNextIndex++]->CreateParameterIteratorL();
+
+            return &iCurData;
+            }
+    private: // Data
+        TAknsRlCommandData iCurData;
+        TInt iNextIndex;
+        const RPointerArray<CAknsEffectCommand>* iArray;
+    };
+
+// ============================ MEMBER FUNCTIONS ===============================
+
+// -----------------------------------------------------------------------------
+// C++ constructor can NOT contain any code, that might leave.
+// -----------------------------------------------------------------------------
+//
+CAknsEffectCommand::CAknsEffectCommand()
+    // CBase initializes: iUid(0)
+    {
+    }
+
+// -----------------------------------------------------------------------------
+// Two-phased constructor.
+// -----------------------------------------------------------------------------
+//
+EXPORT_C CAknsEffectCommand* CAknsEffectCommand::NewL()
+    {
+    return new (ELeave) CAknsEffectCommand();
+    }
+
+// -----------------------------------------------------------------------------
+// Destructor.
+// -----------------------------------------------------------------------------
+//
+CAknsEffectCommand::~CAknsEffectCommand()
+    {
+    iParameters.ResetAndDestroy();
+    }
+
+// -----------------------------------------------------------------------------
+// CAknsEffectCommand::SetEffectUid
+// -----------------------------------------------------------------------------
+//
+EXPORT_C void CAknsEffectCommand::SetEffectUid( const TUid aValue )
+    {
+    iUid = aValue;
+    }
+
+// -----------------------------------------------------------------------------
+// CAknsEffectCommand::EffectUid
+// -----------------------------------------------------------------------------
+//
+EXPORT_C TUid CAknsEffectCommand::EffectUid() const
+    {
+    return iUid;
+    }
+
+// -----------------------------------------------------------------------------
+// CAknsEffectCommand::SetLayerConf
+// -----------------------------------------------------------------------------
+//
+EXPORT_C void CAknsEffectCommand::SetLayerConf(
+    const TAknsRlRenderOpParam aValue )
+    {
+    iLayerConf = aValue;
+    }
+
+// -----------------------------------------------------------------------------
+// CAknsEffectCommand::LayerConf
+// -----------------------------------------------------------------------------
+//
+EXPORT_C TAknsRlRenderOpParam CAknsEffectCommand::LayerConf() const
+    {
+    return iLayerConf;
+    }
+
+// -----------------------------------------------------------------------------
+// CAknsEffectCommand::AppendParameterL
+// -----------------------------------------------------------------------------
+//
+EXPORT_C void CAknsEffectCommand::AppendParameterL(
+    const TAknsRlParameterData& aParameter )
+    {
+    CAknsEffectParameter* newParam = new (ELeave) CAknsEffectParameter();
+    CleanupStack::PushL( newParam );
+    newParam->SetDataL( aParameter );
+    User::LeaveIfError( iParameters.Append( newParam ) );
+    CleanupStack::Pop( newParam );
+    }
+
+// -----------------------------------------------------------------------------
+// CAknsEffectCommand::CreateParameterIteratorL
+// -----------------------------------------------------------------------------
+//
+EXPORT_C MAknsRlParameterIterator* CAknsEffectCommand::CreateParameterIteratorL()
+    {
+    return new (ELeave) CAknsParameterIterator( &iParameters );
+    }
+
+// ============================ MEMBER FUNCTIONS ===============================
+
+// -----------------------------------------------------------------------------
+// C++ constructor can NOT contain any code, that might leave.
+// -----------------------------------------------------------------------------
+//
+CAknsEffectQueueItemData::CAknsEffectQueueItemData( const TAknsItemType aType )
+    : CAknsItemData( aType ), iInputLayer(-1), iOutputLayer(-1)
+    {
+    }
+
+// -----------------------------------------------------------------------------
+// Two-phased constructor.
+// -----------------------------------------------------------------------------
+//
+EXPORT_C CAknsEffectQueueItemData* CAknsEffectQueueItemData::NewL()
+    {
+    return new (ELeave) CAknsEffectQueueItemData( EAknsITEffectQueue );
+    }
+
+// -----------------------------------------------------------------------------
+// Destructor.
+// -----------------------------------------------------------------------------
+//
+CAknsEffectQueueItemData::~CAknsEffectQueueItemData()
+    {
+    iCommands.ResetAndDestroy();
+    }
+
+// -----------------------------------------------------------------------------
+// CAknsEffectQueueItemData::SetRefItem
+// -----------------------------------------------------------------------------
+//
+EXPORT_C void CAknsEffectQueueItemData::SetRefItem( const TAknsItemID aValue )
+    {
+    iRefId = aValue;
+    }
+
+// -----------------------------------------------------------------------------
+// CAknsEffectQueueItemData::RefItem
+// -----------------------------------------------------------------------------
+//
+EXPORT_C TAknsItemID CAknsEffectQueueItemData::RefItem() const
+    {
+    return iRefId;
+    }
+
+// -----------------------------------------------------------------------------
+// CAknsEffectQueueItemData::SetInputLayer
+// -----------------------------------------------------------------------------
+//
+EXPORT_C void CAknsEffectQueueItemData::SetInputLayer( const TInt aValue )
+    {
+    iInputLayer = aValue;
+    }
+
+// -----------------------------------------------------------------------------
+// CAknsEffectQueueItemData::InputLayer
+// -----------------------------------------------------------------------------
+//
+EXPORT_C TInt CAknsEffectQueueItemData::InputLayer() const
+    {
+    return iInputLayer;
+    }
+
+// -----------------------------------------------------------------------------
+// CAknsEffectQueueItemData::SetInputLayerMode
+// -----------------------------------------------------------------------------
+//
+EXPORT_C void CAknsEffectQueueItemData::SetInputLayerMode( const TInt aValue )
+    {
+    iInputLayerMode = aValue;
+    }
+
+// -----------------------------------------------------------------------------
+// CAknsEffectQueueItemData::InputLayerMode
+// -----------------------------------------------------------------------------
+//
+EXPORT_C TInt CAknsEffectQueueItemData::InputLayerMode() const
+    {
+    return iInputLayerMode;
+    }
+
+// -----------------------------------------------------------------------------
+// CAknsEffectQueueItemData::SetOutputLayer
+// -----------------------------------------------------------------------------
+//
+EXPORT_C void CAknsEffectQueueItemData::SetOutputLayer( const TInt aValue )
+    {
+    iOutputLayer = aValue;
+    }
+
+// -----------------------------------------------------------------------------
+// CAknsEffectQueueItemData::OutputLayer
+// -----------------------------------------------------------------------------
+//
+EXPORT_C TInt CAknsEffectQueueItemData::OutputLayer() const
+    {
+    return iOutputLayer;
+    }
+
+// -----------------------------------------------------------------------------
+// CAknsEffectQueueItemData::SetOutputLayerMode
+// -----------------------------------------------------------------------------
+//
+EXPORT_C void CAknsEffectQueueItemData::SetOutputLayerMode( const TInt aValue )
+    {
+    iOutputLayerMode = aValue;
+    }
+
+// -----------------------------------------------------------------------------
+// CAknsEffectQueueItemData::OutputLayerMode
+// -----------------------------------------------------------------------------
+//
+EXPORT_C TInt CAknsEffectQueueItemData::OutputLayerMode() const
+    {
+    return iOutputLayerMode;
+    }
+
+// -----------------------------------------------------------------------------
+// CAknsEffectQueueItemData::AppendCommandL
+// -----------------------------------------------------------------------------
+//
+EXPORT_C void CAknsEffectQueueItemData::AppendCommandL(
+    const CAknsEffectCommand* aCommand )
+    {
+    User::LeaveIfError( iCommands.Append( aCommand ) );
+    }
+
+// -----------------------------------------------------------------------------
+// CAknsEffectQueueItemData::CreateCommandIteratorL
+// -----------------------------------------------------------------------------
+//
+EXPORT_C MAknsRlCommandIterator* CAknsEffectQueueItemData::CreateCommandIteratorL()
+    {
+    return new (ELeave) CAknsCommandIterator( &iCommands );
+    }
+
+// ============================ MEMBER FUNCTIONS ===============================
+
+template < class TOut, class TIn >
+class CAknsAlIterator: public CBase, public MAknsAlIterator
+    {
+    public: // Construction and destruction
+
+        CAknsAlIterator( const RPointerArray<TIn>* aArray )
+            : iNextIndex(0), iArray( aArray )
+            {
+            TIn::InitializeOut( iCurData );
+            }
+
+        virtual ~CAknsAlIterator()
+            {
+            TIn::ReleaseOut( iCurData );
+            }
+
+    public: // Methods
+
+        TBool HasNext()
+            {
+            if( !iArray ) return EFalse;
+            if( iNextIndex>=iArray->Count() ) return EFalse;
+            return ETrue;
+            }
+
+        const TAny* NextL()
+            {
+            if( !HasNext() ) User::Leave( KErrArgument );
+
+            (*iArray)[iNextIndex++]->AssignOutL( iCurData );
+
+            return &iCurData;
+            }
+
+    private: // Data
+        TOut iCurData;
+        TInt iNextIndex;
+        const RPointerArray<TIn>* iArray;
+    };
+
+// Some convenient type definitions
+typedef CAknsAlIterator< TAknsAlAnimationCommandData, CAknsAnimationCommand > CAknsCommandIter;
+typedef CAknsAlIterator< TAknsAlTimingModelData, CAknsTimingModel > CAknsTimingModelIter;
+typedef CAknsAlIterator< TAknsAlAnimationValueData, CAknsAnimationValue > CAknsValueIter;
+
+// ============================ MEMBER FUNCTIONS ===============================
+
+// -----------------------------------------------------------------------------
+// Symbian two-phase constructor.
+// -----------------------------------------------------------------------------
+//
+CAknsTimingModel* CAknsTimingModel::NewL()
+    {
+    return new (ELeave) CAknsTimingModel();
+    }
+
+// -----------------------------------------------------------------------------
+// Destructor.
+// -----------------------------------------------------------------------------
+//
+CAknsTimingModel::~CAknsTimingModel()
+    {
+    iParameters.ResetAndDestroy(); // Deletes the referenced parameters
+    }
+
+// -----------------------------------------------------------------------------
+// C++ default constructor.
+// -----------------------------------------------------------------------------
+//
+CAknsTimingModel::CAknsTimingModel()
+    {
+    }
+
+// -----------------------------------------------------------------------------
+// CAknsEffectQueueItemData::SetTimingModelUid
+// -----------------------------------------------------------------------------
+//
+void CAknsTimingModel::SetTimingModelUid( const TUid aValue )
+    {
+    iTimingModelUid = aValue;
+    }
+
+// -----------------------------------------------------------------------------
+// CAknsEffectQueueItemData::TimingModelUid
+// -----------------------------------------------------------------------------
+//
+TUid CAknsTimingModel::TimingModelUid() const
+    {
+    return iTimingModelUid;
+    }
+
+// -----------------------------------------------------------------------------
+// CAknsEffectQueueItemData::AppendParameterL
+// -----------------------------------------------------------------------------
+//
+void CAknsTimingModel::AppendParameterL( const TAknsRlParameterData& aParameter )
+    {
+    CAknsEffectParameter* newParam = new (ELeave) CAknsEffectParameter();
+    CleanupStack::PushL( newParam );
+    newParam->SetDataL( aParameter );
+    User::LeaveIfError( iParameters.Append( newParam ) );
+    CleanupStack::Pop( newParam );
+    }
+
+// -----------------------------------------------------------------------------
+// CAknsEffectQueueItemData::CreateParameterIteratorL
+// -----------------------------------------------------------------------------
+//
+MAknsRlParameterIterator* CAknsTimingModel::CreateParameterIteratorL()
+    {
+    return new (ELeave) CAknsParameterIterator( &iParameters );
+    }
+
+// -----------------------------------------------------------------------------
+// CAknsEffectQueueItemData::AssignOutL
+// -----------------------------------------------------------------------------
+//
+void CAknsTimingModel::AssignOutL( TAknsAlTimingModelData& aData )
+    {
+    delete aData.iParamIterator;
+    aData.iParamIterator = NULL;
+
+    aData.iTimingModelUid = iTimingModelUid;
+    aData.iParamIterator  = CreateParameterIteratorL();
+    }
+
+// -----------------------------------------------------------------------------
+// CAknsEffectQueueItemData::InitializeOut
+// -----------------------------------------------------------------------------
+//
+void CAknsTimingModel::InitializeOut( TAknsAlTimingModelData& aData )
+    {
+    aData.iParamIterator = NULL;
+    }
+
+// -----------------------------------------------------------------------------
+// CAknsEffectQueueItemData::ReleaseOut
+// -----------------------------------------------------------------------------
+//
+void CAknsTimingModel::ReleaseOut( TAknsAlTimingModelData& aData )
+    {
+    delete aData.iParamIterator;
+    }
+
+// ============================ MEMBER FUNCTIONS ===============================
+
+// -----------------------------------------------------------------------------
+// Symbian two-phase constructor.
+// -----------------------------------------------------------------------------
+//
+CAknsAnimationValue* CAknsAnimationValue::NewL()
+    {
+    return new (ELeave) CAknsAnimationValue();
+    }
+
+// -----------------------------------------------------------------------------
+// Destructor.
+// -----------------------------------------------------------------------------
+//
+CAknsAnimationValue::~CAknsAnimationValue()
+    {
+    iParameters.ResetAndDestroy(); // Deletes the referenced parameters
+    }
+
+// -----------------------------------------------------------------------------
+// C++ constructor.
+// -----------------------------------------------------------------------------
+//
+CAknsAnimationValue::CAknsAnimationValue()
+    {
+    }
+
+// -----------------------------------------------------------------------------
+// CAknsAnimationValue::SetAnimationValueUid
+// -----------------------------------------------------------------------------
+//
+void CAknsAnimationValue::SetAnimationValueUid( const TUid aValue )
+    {
+    iAnimationValueUid = aValue;
+    }
+
+// -----------------------------------------------------------------------------
+// CAknsAnimationValue::AnimationValueUid
+// -----------------------------------------------------------------------------
+//
+TUid CAknsAnimationValue::AnimationValueUid() const
+    {
+    return iAnimationValueUid;
+    }
+
+// -----------------------------------------------------------------------------
+// CAknsAnimationValue::SetTimingModelId
+// -----------------------------------------------------------------------------
+//
+void CAknsAnimationValue::SetTimingModelId( const TInt aValue )
+    {
+    iTimingModelId = aValue;
+    }
+
+// -----------------------------------------------------------------------------
+// CAknsAnimationValue::TimingModelId
+// -----------------------------------------------------------------------------
+//
+TInt CAknsAnimationValue::TimingModelId() const
+    {
+    return iTimingModelId;
+    }
+
+// -----------------------------------------------------------------------------
+// CAknsAnimationValue::AppendParameterL
+// -----------------------------------------------------------------------------
+//
+void CAknsAnimationValue::AppendParameterL( const TAknsRlParameterData& aParameter )
+    {
+    CAknsEffectParameter* newParam = new (ELeave) CAknsEffectParameter();
+    CleanupStack::PushL( newParam );
+    newParam->SetDataL( aParameter );
+    User::LeaveIfError( iParameters.Append( newParam ) );
+    CleanupStack::Pop( newParam );
+    }
+
+// -----------------------------------------------------------------------------
+// CAknsAnimationValue::CreateParameterIteratorL
+// -----------------------------------------------------------------------------
+//
+MAknsRlParameterIterator* CAknsAnimationValue::CreateParameterIteratorL()
+    {
+    return new (ELeave) CAknsParameterIterator( &iParameters );
+    }
+
+// -----------------------------------------------------------------------------
+// CAknsAnimationValue::AssignOutL
+// -----------------------------------------------------------------------------
+//
+void CAknsAnimationValue::AssignOutL( TAknsAlAnimationValueData& aData )
+    {
+    delete aData.iParamIterator;
+    aData.iParamIterator = NULL;
+
+    aData.iTimingModelId     = iTimingModelId;
+    aData.iAnimationValueUid = iAnimationValueUid;
+    aData.iParamIterator     = CreateParameterIteratorL();
+    }
+
+// -----------------------------------------------------------------------------
+// CAknsAnimationValue::InitializeOut
+// -----------------------------------------------------------------------------
+//
+void CAknsAnimationValue::InitializeOut( TAknsAlAnimationValueData& aData )
+    {
+    aData.iParamIterator = NULL;
+    }
+
+// -----------------------------------------------------------------------------
+// CAknsAnimationValue::ReleaseOut
+// -----------------------------------------------------------------------------
+//
+void CAknsAnimationValue::ReleaseOut( TAknsAlAnimationValueData& aData )
+    {
+    delete aData.iParamIterator;
+    }
+
+// ============================ MEMBER FUNCTIONS ===============================
+
+NONSHARABLE_CLASS(CAknsNamedReference) : public CBase
+    {
+    public: // Construction and destruction
+        CAknsNamedReference()
+            {
+            // Derived from CBase -> members zeroed
+            }
+
+        virtual ~CAknsNamedReference()
+            {
+            delete iName;
+            }
+
+    public: // Setters and getters
+        void SetDataL( const TAknsAlNamedReferenceData& aData )
+            {
+            HBufC* temp = aData.iName->AllocL();
+            delete iName;
+            iName = temp;
+            temp = NULL;
+
+            iAnimationValueId = aData.iAnimationValueId;
+            }
+
+        void AssignOutL( TAknsAlNamedReferenceData& aData )
+            {
+            aData.iName = iName;
+            aData.iAnimationValueId = iAnimationValueId;
+            }
+
+        static void InitializeOut( TAknsAlNamedReferenceData& )
+            {
+            }
+
+        static void ReleaseOut( TAknsAlNamedReferenceData& )
+            {
+            }
+
+    private: // Data
+        HBufC* iName;
+        TInt iAnimationValueId;
+    };
+
+typedef CAknsAlIterator< TAknsAlNamedReferenceData, CAknsNamedReference > CAknsNamedReferenceIter;
+
+// ============================ MEMBER FUNCTIONS ===============================
+
+NONSHARABLE_CLASS(CAknsSizeBoundParameter) : public CBase
+    {
+    public: // Construction and destruction
+        CAknsSizeBoundParameter()
+            {
+            // Derived from CBase -> members zeroed
+            }
+
+        virtual ~CAknsSizeBoundParameter()
+            {
+            delete iName;
+            }
+
+    public: // Setters and getters
+        void SetDataL( const TAknsAlSizeBoundParameterData& aData )
+            {
+            HBufC* temp = aData.iName->AllocL();
+            delete iName;
+            iName = temp;
+            temp = NULL;
+
+            iAnimationValueId = aData.iAnimationValueId;
+            iParamFlags = aData.iParamFlags;
+            }
+
+        void AssignOutL( TAknsAlSizeBoundParameterData& aData )
+            {
+            aData.iName = iName;
+            aData.iAnimationValueId = iAnimationValueId;
+            aData.iParamFlags = iParamFlags;
+            }
+
+        static void InitializeOut( TAknsAlSizeBoundParameterData& )
+            {
+            }
+
+        static void ReleaseOut( TAknsAlSizeBoundParameterData& )
+            {
+            }
+
+    private: // Data
+        HBufC* iName;
+        TInt iAnimationValueId;
+        TInt iParamFlags;
+    };
+
+typedef CAknsAlIterator< TAknsAlSizeBoundParameterData, CAknsSizeBoundParameter > CAknsSizeBoundParameterIter;
+
+// ============================ MEMBER FUNCTIONS ===============================
+
+// -----------------------------------------------------------------------------
+// Two-phase constructor.
+// -----------------------------------------------------------------------------
+//
+CAknsAnimationCommand* CAknsAnimationCommand::NewL()
+    {
+    return new (ELeave) CAknsAnimationCommand();
+    }
+
+// -----------------------------------------------------------------------------
+// Destructor.
+// -----------------------------------------------------------------------------
+//
+CAknsAnimationCommand::~CAknsAnimationCommand()
+    {
+    iNamedReferences.ResetAndDestroy();
+    }
+
+// -----------------------------------------------------------------------------
+// C++ constructor.
+// -----------------------------------------------------------------------------
+//
+CAknsAnimationCommand::CAknsAnimationCommand()
+    {
+    }
+
+// -----------------------------------------------------------------------------
+// CAknsAnimationCommand::AppendNamedReferenceL
+// -----------------------------------------------------------------------------
+//
+void CAknsAnimationCommand::AppendNamedReferenceL(
+    const TAknsAlNamedReferenceData& aData )
+    {
+    CAknsNamedReference* ref = new (ELeave) CAknsNamedReference();
+    CleanupStack::PushL( ref );
+    ref->SetDataL( aData );
+    User::LeaveIfError( iNamedReferences.Append( ref ) );
+    CleanupStack::Pop( ref );
+    }
+
+// -----------------------------------------------------------------------------
+// CAknsAnimationCommand::CreateNamedReferenceIteratorL
+// -----------------------------------------------------------------------------
+//
+MAknsAlIterator* CAknsAnimationCommand::CreateNamedReferenceIteratorL()
+    {
+    return new (ELeave) CAknsNamedReferenceIter( &iNamedReferences );
+    }
+
+// -----------------------------------------------------------------------------
+// CAknsAnimationCommand::AssignOutL
+// -----------------------------------------------------------------------------
+//
+void CAknsAnimationCommand::AssignOutL( TAknsAlAnimationCommandData& aData )
+    {
+    delete aData.iParamIterator;
+    aData.iParamIterator = NULL;
+
+    delete aData.iNamedReferenceIterator;
+    aData.iNamedReferenceIterator = NULL;
+
+    aData.iLayerConf              = iLayerConf;
+    aData.iEffectUid              = iUid;
+    aData.iParamIterator          = CreateParameterIteratorL();
+    aData.iNamedReferenceIterator = CreateNamedReferenceIteratorL();
+    }
+
+// -----------------------------------------------------------------------------
+// CAknsAnimationCommand::InitializeOut
+// -----------------------------------------------------------------------------
+//
+void CAknsAnimationCommand::InitializeOut( TAknsAlAnimationCommandData& aData )
+    {
+    aData.iParamIterator          = NULL;
+    aData.iNamedReferenceIterator = NULL;
+    }
+
+// -----------------------------------------------------------------------------
+// CAknsAnimationCommand::ReleaseOut
+// -----------------------------------------------------------------------------
+//
+void CAknsAnimationCommand::ReleaseOut( TAknsAlAnimationCommandData& aData )
+    {
+    delete aData.iParamIterator;
+    delete aData.iNamedReferenceIterator;
+    }
+
+// ============================ MEMBER FUNCTIONS ===============================
+
+// -----------------------------------------------------------------------------
+// Symbian two-phase constructor.
+// -----------------------------------------------------------------------------
+//
+CAknsAnimationItemData* CAknsAnimationItemData::NewL()
+    {
+    return new (ELeave) CAknsAnimationItemData();
+    }
+
+// -----------------------------------------------------------------------------
+// Destructor.
+// -----------------------------------------------------------------------------
+//
+CAknsAnimationItemData::~CAknsAnimationItemData()
+    {
+    iPreprocessCommands.ResetAndDestroy();
+    iAnimationCommands.ResetAndDestroy();
+    iAnimationValues.ResetAndDestroy();
+    iTimingModels.ResetAndDestroy();
+    iSizeBoundParams.ResetAndDestroy();
+    }
+
+// -----------------------------------------------------------------------------
+// C++ constructor.
+// -----------------------------------------------------------------------------
+//
+CAknsAnimationItemData::CAknsAnimationItemData():
+    CAknsItemData( EAknsITAnimation ),
+    iMinInterval( KDefaultAnimationMinimumInterval )
+    {
+    }
+
+// -----------------------------------------------------------------------------
+// CAknsAnimationItemData::SetMinInterval
+// -----------------------------------------------------------------------------
+//
+void CAknsAnimationItemData::SetMinInterval( TInt aMin )
+    {
+    iMinInterval = aMin;
+    }
+
+// -----------------------------------------------------------------------------
+// CAknsAnimationItemData::MinInterval
+// -----------------------------------------------------------------------------
+//
+TInt CAknsAnimationItemData::MinInterval() const
+    {
+    return iMinInterval;
+    }
+
+// -----------------------------------------------------------------------------
+// CAknsAnimationItemData::SetMorphing
+// -----------------------------------------------------------------------------
+//
+void CAknsAnimationItemData::SetMorphing( TBool aMorphing )
+    {
+    iMorphing = aMorphing;
+    }
+
+// -----------------------------------------------------------------------------
+// CAknsAnimationItemData::Morphing
+// -----------------------------------------------------------------------------
+//
+TBool CAknsAnimationItemData::Morphing() const
+    {
+    return iMorphing;
+    }
+
+// -----------------------------------------------------------------------------
+// CAknsAnimationItemData::SetInputLayer
+// -----------------------------------------------------------------------------
+//
+void CAknsAnimationItemData::SetInputLayer( const TInt aValue )
+    {
+    iInputLayer = aValue;
+    }
+
+// -----------------------------------------------------------------------------
+// CAknsAnimationItemData::InputLayer
+// -----------------------------------------------------------------------------
+//
+TInt CAknsAnimationItemData::InputLayer() const
+    {
+    return iInputLayer;
+    }
+
+// -----------------------------------------------------------------------------
+// CAknsAnimationItemData::SetInputLayerMode
+// -----------------------------------------------------------------------------
+//
+void CAknsAnimationItemData::SetInputLayerMode( const TInt aValue )
+    {
+    iInputLayerMode = aValue;
+    }
+
+// -----------------------------------------------------------------------------
+// CAknsAnimationItemData::InputLayerMode
+// -----------------------------------------------------------------------------
+//
+TInt CAknsAnimationItemData::InputLayerMode() const
+    {
+    return iInputLayerMode;
+    }
+
+// -----------------------------------------------------------------------------
+// CAknsAnimationItemData::SetOutputLayer
+// -----------------------------------------------------------------------------
+//
+void CAknsAnimationItemData::SetOutputLayer( const TInt aValue )
+    {
+    iOutputLayer = aValue;
+    }
+
+// -----------------------------------------------------------------------------
+// CAknsAnimationItemData::OutputLayer
+// -----------------------------------------------------------------------------
+//
+TInt CAknsAnimationItemData::OutputLayer() const
+    {
+    return iOutputLayer;
+    }
+
+// -----------------------------------------------------------------------------
+// CAknsAnimationItemData::SetOutputLayerMode
+// -----------------------------------------------------------------------------
+//
+void CAknsAnimationItemData::SetOutputLayerMode( const TInt aValue )
+    {
+    iOutputLayerMode = aValue;
+    }
+
+// -----------------------------------------------------------------------------
+// CAknsAnimationItemData::OutputLayerMode
+// -----------------------------------------------------------------------------
+//
+TInt CAknsAnimationItemData::OutputLayerMode() const
+    {
+    return iOutputLayerMode;
+    }
+
+// -----------------------------------------------------------------------------
+// CAknsAnimationItemData::AppendPreprocessCommandL
+// -----------------------------------------------------------------------------
+//
+void CAknsAnimationItemData::AppendPreprocessCommandL(
+    CAknsEffectCommand* aCommand )
+    {
+    User::LeaveIfError( iPreprocessCommands.Append( aCommand ) );
+    }
+
+// -----------------------------------------------------------------------------
+// CAknsAnimationItemData::PreprocessCommandIteratorL
+// -----------------------------------------------------------------------------
+//
+MAknsRlCommandIterator* CAknsAnimationItemData::PreprocessCommandIteratorL() const
+    {
+    return new (ELeave) CAknsCommandIterator( &iPreprocessCommands );
+    }
+
+// -----------------------------------------------------------------------------
+// CAknsAnimationItemData::AppendCommandL
+// -----------------------------------------------------------------------------
+//
+void CAknsAnimationItemData::AppendCommandL( CAknsAnimationCommand* aCommand )
+    {
+    User::LeaveIfError( iAnimationCommands.Append( aCommand ) );
+    }
+
+// -----------------------------------------------------------------------------
+// CAknsAnimationItemData::CommandIteratorL
+// -----------------------------------------------------------------------------
+//
+MAknsAlIterator* CAknsAnimationItemData::CommandIteratorL() const
+    {
+    return new (ELeave) CAknsCommandIter( &iAnimationCommands );
+    }
+
+// -----------------------------------------------------------------------------
+// CAknsAnimationItemData::AppendAnimationValueL
+// -----------------------------------------------------------------------------
+//
+void CAknsAnimationItemData::AppendAnimationValueL( CAknsAnimationValue* aData )
+    {
+    User::LeaveIfError( iAnimationValues.Append( aData ) );
+    }
+
+// -----------------------------------------------------------------------------
+// CAknsAnimationItemData::AnimationValueIteratorL
+// -----------------------------------------------------------------------------
+//
+MAknsAlIterator* CAknsAnimationItemData::AnimationValueIteratorL() const
+    {
+    return new (ELeave) CAknsValueIter( &iAnimationValues );
+    }
+
+// -----------------------------------------------------------------------------
+// CAknsAnimationItemData::AppendTimingModelL
+// -----------------------------------------------------------------------------
+//
+void CAknsAnimationItemData::AppendTimingModelL( CAknsTimingModel* aData )
+    {
+    User::LeaveIfError( iTimingModels.Append( aData ) );
+    }
+
+// -----------------------------------------------------------------------------
+// CAknsAnimationItemData::TimingModelIteratorL
+// -----------------------------------------------------------------------------
+//
+MAknsAlIterator* CAknsAnimationItemData::TimingModelIteratorL() const
+    {
+    return new (ELeave) CAknsTimingModelIter( &iTimingModels );
+    }
+
+// -----------------------------------------------------------------------------
+// CAknsAnimationItemData::AppendSizeBoundParamL
+// -----------------------------------------------------------------------------
+//
+void CAknsAnimationItemData::AppendSizeBoundParamL(
+    const TAknsAlSizeBoundParameterData& aData )
+    {
+    CAknsSizeBoundParameter* parameter = new (ELeave) CAknsSizeBoundParameter();
+    CleanupStack::PushL( parameter );
+    parameter->SetDataL( aData );
+    User::LeaveIfError( iSizeBoundParams.Append( parameter ) );
+    CleanupStack::Pop( parameter );
+    }
+
+// -----------------------------------------------------------------------------
+// CAknsAnimationItemData::SizeBoundParamIteratorL
+// -----------------------------------------------------------------------------
+//
+MAknsAlIterator* CAknsAnimationItemData::SizeBoundParamIteratorL() const
+    {
+    return new(ELeave) CAknsSizeBoundParameterIter( &iSizeBoundParams );
+    }
+
+//  End of File