--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/skins/AknSkins/alsrc/AknsAlEffectParamContainer.cpp Thu Dec 17 09:14:12 2009 +0200
@@ -0,0 +1,179 @@
+/*
+* 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: Combined container & iterator for storing RL parameters.
+*
+*/
+
+
+// INCLUDE FILES
+#include "AknsAlEffectParamContainer.h"
+
+// ============================ INTERNAL CLASSES ===============================
+NONSHARABLE_CLASS( CAknsAlParamData ): public CBase
+ {
+ private:
+
+ CAknsAlParamData()
+ {
+ // Derived from CBase -> members zeroed automatically
+ }
+
+ void ConstructL( const TAknsRlParameterData& aData )
+ {
+ iName = aData.iName->AllocL();
+ 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;
+ }
+ }
+
+ public:
+
+ static CAknsAlParamData* NewL( const TAknsRlParameterData& aData )
+ {
+ CAknsAlParamData* self = new(ELeave) CAknsAlParamData();
+ CleanupStack::PushL( self );
+ self->ConstructL( aData );
+ CleanupStack::Pop( self );
+ return self;
+ }
+
+ virtual ~CAknsAlParamData()
+ {
+ delete iName;
+ delete iBuffer;
+ }
+
+ void FillData( TAknsRlParameterData& aData ) const
+ {
+ 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:
+ HBufC* iName;
+ TAknsRlParameterType iType;
+ HBufC* iBuffer;
+ TInt iNumber;
+ TAknsRlGraphicsParam iGfx;
+ };
+
+// ============================ MEMBER FUNCTIONS ===============================
+
+// -----------------------------------------------------------------------------
+// CAknsAlEffectParamContainer::CAknsAlEffectParamContainer
+// -----------------------------------------------------------------------------
+//
+CAknsAlEffectParamContainer::CAknsAlEffectParamContainer()
+ {
+ // Derived from CBase -> members zeroed
+ }
+
+// -----------------------------------------------------------------------------
+// CAknsAlEffectParamContainer::CAknsAlEffectParamContainer
+// -----------------------------------------------------------------------------
+//
+CAknsAlEffectParamContainer* CAknsAlEffectParamContainer::NewL()
+ {
+ CAknsAlEffectParamContainer* self = new(ELeave) CAknsAlEffectParamContainer();
+ return self;
+ }
+
+// -----------------------------------------------------------------------------
+// CAknsAlEffectParamContainer::~CAknsAlEffectParamContainer
+// -----------------------------------------------------------------------------
+//
+CAknsAlEffectParamContainer::~CAknsAlEffectParamContainer()
+ {
+ // Deletes the referenced parameters
+ iParams.ResetAndDestroy(); //lint !e1551 No exception thrown
+ }
+
+// -----------------------------------------------------------------------------
+// CAknsAlEffectParamContainer::HasNext
+// -----------------------------------------------------------------------------
+//
+TBool CAknsAlEffectParamContainer::HasNext()
+ {
+ if( iIteratorIndex < iParams.Count() )
+ return ETrue;
+
+ return EFalse;
+ }
+
+// -----------------------------------------------------------------------------
+// CAknsAlEffectParamContainer::NextL
+// -----------------------------------------------------------------------------
+//
+const TAknsRlParameterData* CAknsAlEffectParamContainer::NextL()
+ {
+ if( iParams.Count() <= iIteratorIndex )
+ User::Leave( KErrOverflow );
+
+ CAknsAlParamData* param = iParams[iIteratorIndex];
+ param->FillData( iIteratorData );
+
+ iIteratorIndex++;
+
+ return &iIteratorData;
+ }
+
+// -----------------------------------------------------------------------------
+// CAknsAlEffectParamContainer::AddParamL
+// -----------------------------------------------------------------------------
+//
+void CAknsAlEffectParamContainer::AddParamL( const TAknsRlParameterData& aParam )
+ {
+ CAknsAlParamData* data = CAknsAlParamData::NewL( aParam );
+ CleanupStack::PushL( data );
+ iParams.AppendL( data );
+ CleanupStack::Pop( data );
+ }
+
+// -----------------------------------------------------------------------------
+// CAknsAlEffectParamContainer::Begin
+// -----------------------------------------------------------------------------
+//
+void CAknsAlEffectParamContainer::Begin()
+ {
+ iIteratorIndex = 0;
+ }
+
+// End of file