--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/skins/AknSkins/src/AknsItemData.cpp Thu Dec 17 09:14:12 2009 +0200
@@ -0,0 +1,665 @@
+/*
+* 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: Base class for item data classes.
+*
+*/
+
+
+// INCLUDE FILES
+
+#include <fbs.h>
+#include <AknsItemDef.h> // For TAknsAppIconInfo
+#include <aknenv.h>
+
+#include <AknsItemData.h>
+#include <AknsImageAttributeData.h>
+
+#include "AknsDebug.h"
+#include <AknsConstants.h>
+
+// ============================ MEMBER FUNCTIONS ===============================
+
+// -----------------------------------------------------------------------------
+// CAknsItemData::CAknsItemData
+// C++ constructor can NOT contain any code, that might leave.
+// -----------------------------------------------------------------------------
+//
+CAknsItemData::CAknsItemData( const TAknsItemType aType )
+ : iType( aType )
+ {
+ }
+
+// -----------------------------------------------------------------------------
+// Destructor.
+// -----------------------------------------------------------------------------
+//
+CAknsItemData::~CAknsItemData()
+ {
+ }
+
+// -----------------------------------------------------------------------------
+// CAknsItemData::SetType
+// (commented in the header).
+// -----------------------------------------------------------------------------
+//
+void CAknsItemData::SetType( const TAknsItemType aType )
+ {
+ iType = aType;
+ }
+
+// -----------------------------------------------------------------------------
+// CAknsItemData::Type
+// (commented in the header).
+// -----------------------------------------------------------------------------
+//
+EXPORT_C TAknsItemType CAknsItemData::Type() const
+ {
+ return iType;
+ }
+
+// ============================ MEMBER FUNCTIONS ===============================
+
+// -----------------------------------------------------------------------------
+// CAknsImageItemData::CAknsImageItemData
+// C++ constructor can NOT contain any code, that might leave.
+// -----------------------------------------------------------------------------
+//
+CAknsImageItemData::CAknsImageItemData( const TAknsItemType aType )
+ : CAknsItemData( aType ) // CBase initializes: iAttributeData( NULL )
+ {
+ iParentIID = KAknsIIDNone;
+ }
+
+// -----------------------------------------------------------------------------
+// Destructor.
+// -----------------------------------------------------------------------------
+//
+CAknsImageItemData::~CAknsImageItemData()
+ {
+ delete iAttributeData;
+ }
+
+// -----------------------------------------------------------------------------
+// CAknsImageItemData::SetAttributesL
+// (commented in the header).
+// -----------------------------------------------------------------------------
+//
+EXPORT_C void CAknsImageItemData::SetAttributesL(
+ const TAknsImageAttributeData& aAttributes )
+ {
+ if( !iAttributeData )
+ {
+ iAttributeData = new (ELeave) TAknsImageAttributeData;
+ }
+
+ iAttributeData->Set( aAttributes );
+ }
+
+// -----------------------------------------------------------------------------
+// CAknsImageItemData::SetParentIID
+// (commented in the header).
+// -----------------------------------------------------------------------------
+//
+EXPORT_C void CAknsImageItemData::SetParentIID(const TAknsItemID& aIID)
+ {
+ iParentIID = aIID;
+ }
+
+// -----------------------------------------------------------------------------
+// CAknsImageItemData::SetDrawRect
+// (commented in the header).
+// -----------------------------------------------------------------------------
+//
+EXPORT_C void CAknsImageItemData::SetDrawRect(const TRect& aRect)
+ {
+ iDrawRect = aRect;
+ }
+
+// -----------------------------------------------------------------------------
+// CAknsImageItemData::ParentIID
+// (commented in the header).
+// -----------------------------------------------------------------------------
+//
+EXPORT_C TAknsItemID CAknsImageItemData::ParentIID()
+ {
+ return iParentIID;
+ }
+
+// -----------------------------------------------------------------------------
+// CAknsImageItemData::DrawRect
+// (commented in the header).
+// -----------------------------------------------------------------------------
+//
+EXPORT_C TRect CAknsImageItemData::DrawRect()
+ {
+ return iDrawRect;
+ }
+
+// -----------------------------------------------------------------------------
+// CAknsImageItemData::Attributes
+// (commented in the header).
+// -----------------------------------------------------------------------------
+//
+EXPORT_C const TAknsImageAttributeData* CAknsImageItemData::Attributes() const
+ {
+ return iAttributeData;
+ }
+
+// ============================ MEMBER FUNCTIONS ===============================
+
+// -----------------------------------------------------------------------------
+// CAknsBitmapItemData::CAknsBitmapItemData
+// C++ constructor can NOT contain any code, that might leave.
+// -----------------------------------------------------------------------------
+//
+CAknsBitmapItemData::CAknsBitmapItemData( const TAknsItemType aType )
+ : CAknsImageItemData( aType ) // CBase initializes: iBitmap( NULL )
+ {
+ }
+
+// -----------------------------------------------------------------------------
+// CAknsBitmapItemData::NewL
+// Two-phased constructor.
+// -----------------------------------------------------------------------------
+//
+EXPORT_C CAknsBitmapItemData* CAknsBitmapItemData::NewL()
+ {
+ return new (ELeave) CAknsBitmapItemData( EAknsITBitmap );
+ }
+
+// -----------------------------------------------------------------------------
+// Destructor.
+// -----------------------------------------------------------------------------
+//
+CAknsBitmapItemData::~CAknsBitmapItemData()
+ {
+ delete iBitmap;
+ }
+
+// -----------------------------------------------------------------------------
+// CAknsBitmapItemData::SetBitmap
+// (commented in the header).
+// -----------------------------------------------------------------------------
+//
+EXPORT_C void CAknsBitmapItemData::SetBitmap( CFbsBitmap* aBitmap )
+ {
+ iBitmap = aBitmap;
+ }
+
+// -----------------------------------------------------------------------------
+// CAknsBitmapItemData::DestroyAndSetBitmap
+// (commented in the header).
+// -----------------------------------------------------------------------------
+//
+EXPORT_C void CAknsBitmapItemData::DestroyAndSetBitmap( CFbsBitmap* aBitmap )
+ {
+ delete iBitmap;
+ iBitmap = aBitmap;
+ }
+
+// -----------------------------------------------------------------------------
+// CAknsBitmapItemData::Bitmap
+// (commented in the header).
+// -----------------------------------------------------------------------------
+//
+EXPORT_C CFbsBitmap* CAknsBitmapItemData::Bitmap()
+ {
+ return iBitmap;
+ }
+
+// ============================ MEMBER FUNCTIONS ===============================
+
+// -----------------------------------------------------------------------------
+// CAknsMaskedBitmapItemData::CAknsMaskedBitmapItemData
+// C++ constructor can NOT contain any code, that might leave.
+// -----------------------------------------------------------------------------
+//
+CAknsMaskedBitmapItemData::CAknsMaskedBitmapItemData( const TAknsItemType aType )
+ : CAknsBitmapItemData( aType )
+ // CBase initializes: iMask(NULL)
+ {
+ }
+
+// -----------------------------------------------------------------------------
+// CAknsMaskedBitmapItemData::NewL
+// Two-phased constructor.
+// -----------------------------------------------------------------------------
+//
+EXPORT_C CAknsMaskedBitmapItemData* CAknsMaskedBitmapItemData::NewL()
+ {
+ return new (ELeave) CAknsMaskedBitmapItemData( EAknsITMaskedBitmap );
+ }
+
+// -----------------------------------------------------------------------------
+// Destructor.
+// -----------------------------------------------------------------------------
+//
+CAknsMaskedBitmapItemData::~CAknsMaskedBitmapItemData()
+ {
+ delete iMask;
+ }
+
+// -----------------------------------------------------------------------------
+// CAknsMaskedBitmapItemData::SetMask
+// (commented in the header).
+// -----------------------------------------------------------------------------
+//
+EXPORT_C void CAknsMaskedBitmapItemData::SetMask( CFbsBitmap* aMask )
+ {
+ iMask = aMask;
+ }
+
+// -----------------------------------------------------------------------------
+// CAknsMaskedBitmapItemData::DestroyAndSetMask
+// (commented in the header).
+// -----------------------------------------------------------------------------
+//
+EXPORT_C void CAknsMaskedBitmapItemData::DestroyAndSetMask( CFbsBitmap* aMask )
+ {
+ delete iMask;
+ iMask = aMask;
+ }
+
+// -----------------------------------------------------------------------------
+// CAknsMaskedBitmapItemData::Mask
+// (commented in the header).
+// -----------------------------------------------------------------------------
+//
+EXPORT_C CFbsBitmap* CAknsMaskedBitmapItemData::Mask()
+ {
+ return iMask;
+ }
+
+// ============================ MEMBER FUNCTIONS ===============================
+
+// -----------------------------------------------------------------------------
+// C++ constructor can NOT contain any code, that might leave.
+// -----------------------------------------------------------------------------
+//
+CAknsColorTableItemData::CAknsColorTableItemData( const TAknsItemType aType )
+ : CAknsImageItemData( aType )
+ // CBase initializes: iColorArray( NULL ), iColorArraySize( 0 )
+ {
+ }
+
+// -----------------------------------------------------------------------------
+// CAknsColorTableItemData::NewL
+// Two-phased constructor.
+// -----------------------------------------------------------------------------
+//
+EXPORT_C CAknsColorTableItemData* CAknsColorTableItemData::NewL()
+ {
+ return new (ELeave) CAknsColorTableItemData( EAknsITColorTable );
+ }
+
+// -----------------------------------------------------------------------------
+// Destructor.
+// -----------------------------------------------------------------------------
+//
+CAknsColorTableItemData::~CAknsColorTableItemData()
+ {
+ delete [] iColorArray;
+ iColorArraySize = 0;
+ }
+
+// -----------------------------------------------------------------------------
+// CAknsColorTableItemData::SetColorsL
+// (commented in the header).
+// -----------------------------------------------------------------------------
+//
+EXPORT_C void CAknsColorTableItemData::SetColorsL( const TInt aNumberOfColors,
+ const TAknsColorTableEntry* aColors )
+ {
+ delete [] iColorArray;
+ iColorArray = NULL;
+ iColorArraySize = 0;
+
+ iColorArray = new (ELeave) TAknsColorTableEntry[ //lint !e119 ELeave ok
+ static_cast<TUint>(aNumberOfColors) ];
+ Mem::Copy( iColorArray, aColors,
+ static_cast<TInt>(sizeof(TAknsColorTableEntry))*aNumberOfColors );
+ iColorArraySize = aNumberOfColors;
+ }
+
+// -----------------------------------------------------------------------------
+// CAknsColorTableItemData::ColorIndexed
+// (commented in the header).
+// -----------------------------------------------------------------------------
+//
+EXPORT_C TInt CAknsColorTableItemData::ColorIndexed( const TInt aIndex ) const
+ {
+ __ASSERT_DEBUG( iColorArray, AKNS_DEBUG_PANIC( EAknsDPanicNotInitialized ) );
+ __ASSERT_DEBUG( aIndex>=0, AKNS_DEBUG_PANIC( EAknsDPanicInvalidParameter ) );
+ __ASSERT_DEBUG( aIndex<iColorArraySize, AKNS_DEBUG_PANIC( EAknsDPanicInvalidParameter ) );
+
+ return iColorArray[ aIndex ].iIndex;
+ }
+
+// -----------------------------------------------------------------------------
+// CAknsColorTableItemData::ColorRgb
+// (commented in the header).
+// -----------------------------------------------------------------------------
+//
+EXPORT_C TRgb CAknsColorTableItemData::ColorRgb( const TInt aIndex ) const
+ {
+ __ASSERT_DEBUG( iColorArray, AKNS_DEBUG_PANIC( EAknsDPanicNotInitialized ) );
+ __ASSERT_DEBUG( aIndex>=0, AKNS_DEBUG_PANIC( EAknsDPanicInvalidParameter ) );
+ __ASSERT_DEBUG( aIndex<iColorArraySize, AKNS_DEBUG_PANIC( EAknsDPanicInvalidParameter ) );
+
+ return iColorArray[ aIndex ].iRgb;
+ }
+
+// -----------------------------------------------------------------------------
+// CAknsColorTableItemData::GetColorL
+// (commented in the header).
+// -----------------------------------------------------------------------------
+//
+EXPORT_C void CAknsColorTableItemData::GetColorL(
+ const TInt aIndex, TRgb& aColor ) const
+ {
+ if( !iColorArray )
+ {
+ User::Leave( KErrArgument );
+ }
+ if( (aIndex<0) || (aIndex>=iColorArraySize) )
+ {
+ User::Leave( KErrNotFound );
+ }
+
+ TInt indexed = ColorIndexed( aIndex );
+ if( indexed >= 0 )
+ {
+ aColor = CAknEnv::AvkonColor( indexed );
+ }
+ else
+ {
+ aColor = ColorRgb( aIndex );
+ }
+ }
+
+// ============================ MEMBER FUNCTIONS ===============================
+
+// -----------------------------------------------------------------------------
+// C++ constructor can NOT contain any code, that might leave.
+// -----------------------------------------------------------------------------
+//
+CAknsImageTableItemData::CAknsImageTableItemData( const TAknsItemType aType )
+ : CAknsImageItemData( aType )
+ // CBase initializes: iNumberOfImages(0), iImageArray( NULL )
+ {
+ }
+
+// -----------------------------------------------------------------------------
+// CAknsImageTableItemData::NewL
+// Two-phased constructor.
+// -----------------------------------------------------------------------------
+//
+EXPORT_C CAknsImageTableItemData* CAknsImageTableItemData::NewL()
+ {
+ return new (ELeave) CAknsImageTableItemData( EAknsITImageTable );
+ }
+
+// -----------------------------------------------------------------------------
+// Destructor.
+// -----------------------------------------------------------------------------
+//
+CAknsImageTableItemData::~CAknsImageTableItemData()
+ {
+ delete [] iImageArray;
+ }
+
+// -----------------------------------------------------------------------------
+// CAknsImageTableItemData::SetImagesL
+// (commented in the header).
+// -----------------------------------------------------------------------------
+//
+EXPORT_C void CAknsImageTableItemData::SetImagesL( const TInt aNumberOfImages,
+ const TAknsItemID* aImages )
+ {
+ delete [] iImageArray;
+ iImageArray = NULL;
+ iNumberOfImages = 0;
+
+ iImageArray = new (ELeave) TAknsItemID[ //lint !e119 ELeave ok
+ static_cast<TUint>(aNumberOfImages) ];
+ iNumberOfImages = aNumberOfImages;
+ Mem::Copy( iImageArray, aImages,
+ static_cast<TInt>(sizeof(TAknsItemID))*aNumberOfImages );
+ }
+
+// -----------------------------------------------------------------------------
+// CAknsImageTableItemData::ImageIID
+// (commented in the header).
+// -----------------------------------------------------------------------------
+//
+EXPORT_C TAknsItemID CAknsImageTableItemData::ImageIID( const TInt aIndex ) const
+ {
+ return iImageArray[aIndex];
+ }
+
+// -----------------------------------------------------------------------------
+// CAknsImageTableItemData::Images
+// (commented in the header).
+// -----------------------------------------------------------------------------
+//
+EXPORT_C TAknsItemID* CAknsImageTableItemData::Images() const
+ {
+ return iImageArray;
+ } //lint !e1763 Member exposed intentionally
+
+// -----------------------------------------------------------------------------
+// CAknsImageTableItemData::NumberOfImages
+// (commented in the header).
+// -----------------------------------------------------------------------------
+//
+EXPORT_C TInt CAknsImageTableItemData::NumberOfImages() const
+ {
+ return iNumberOfImages;
+ }
+
+// ============================ MEMBER FUNCTIONS ===============================
+
+// -----------------------------------------------------------------------------
+// C++ constructor can NOT contain any code, that might leave.
+// -----------------------------------------------------------------------------
+//
+CAknsBmpAnimItemData::CAknsBmpAnimItemData( const TAknsItemType aType )
+ : CAknsImageTableItemData( aType ), iFrameInterval( -1 )
+ // CBase initializes: iFrameArray(NULL), iLastFrameBackground(EFalse),
+ // iPlayMode(0), iFlash(EFalse)
+ {
+ }
+
+// -----------------------------------------------------------------------------
+// CAknsBmpAnimItemData::NewL
+// Two-phased constructor.
+// -----------------------------------------------------------------------------
+//
+EXPORT_C CAknsBmpAnimItemData* CAknsBmpAnimItemData::NewL()
+ {
+ return new (ELeave) CAknsBmpAnimItemData( EAknsITBmpAnim );
+ }
+
+// -----------------------------------------------------------------------------
+// Destructor.
+// -----------------------------------------------------------------------------
+//
+CAknsBmpAnimItemData::~CAknsBmpAnimItemData()
+ {
+ delete [] iFrameArray;
+ }
+
+// -----------------------------------------------------------------------------
+// CAknsBmpAnimItemData::SetFrameInfosL
+// (commented in the header).
+// -----------------------------------------------------------------------------
+//
+EXPORT_C void CAknsBmpAnimItemData::SetFrameInfosL(
+ const TAknsBmpAnimFrameInfo* aFrameInfos )
+ {
+ delete [] iFrameArray;
+ iFrameArray = NULL;
+
+ iFrameArray = new (ELeave) TAknsBmpAnimFrameInfo[ //lint !e119 ELeave ok
+ static_cast<TUint>(iNumberOfImages) ];
+
+ Mem::Copy( iFrameArray, aFrameInfos,
+ static_cast<TInt>(sizeof(TAknsBmpAnimFrameInfo))*iNumberOfImages );
+ }
+
+// -----------------------------------------------------------------------------
+// CAknsBmpAnimItemData::FrameInfos
+// (commented in the header).
+// -----------------------------------------------------------------------------
+//
+EXPORT_C TAknsBmpAnimFrameInfo* CAknsBmpAnimItemData::FrameInfos() const
+ {
+ return iFrameArray;
+ } //lint !e1763 Member exposed intentionally
+
+// -----------------------------------------------------------------------------
+// CAknsBmpAnimItemData::SetLastFrameBackground
+// (commented in the header).
+// -----------------------------------------------------------------------------
+//
+EXPORT_C void CAknsBmpAnimItemData::SetLastFrameBackground( TBool aLastFrameBg )
+ {
+ iLastFrameBackground = aLastFrameBg;
+ }
+
+// -----------------------------------------------------------------------------
+// CAknsBmpAnimItemData::LastFrameBackground
+// (commented in the header).
+// -----------------------------------------------------------------------------
+//
+EXPORT_C TBool CAknsBmpAnimItemData::LastFrameBackground() const
+ {
+ return iLastFrameBackground;
+ }
+
+// -----------------------------------------------------------------------------
+// CAknsBmpAnimItemData::SetFrameInterval
+// (commented in the header).
+// -----------------------------------------------------------------------------
+//
+EXPORT_C void CAknsBmpAnimItemData::SetFrameInterval( const TInt16 aFrameInterval )
+ {
+ iFrameInterval = aFrameInterval;
+ }
+
+// -----------------------------------------------------------------------------
+// CAknsBmpAnimItemData::FrameInterval
+// (commented in the header).
+// -----------------------------------------------------------------------------
+//
+EXPORT_C TInt16 CAknsBmpAnimItemData::FrameInterval() const
+ {
+ return iFrameInterval;
+ }
+
+// -----------------------------------------------------------------------------
+// CAknsBmpAnimItemData::SetPlayMode
+// (commented in the header).
+// -----------------------------------------------------------------------------
+//
+EXPORT_C void CAknsBmpAnimItemData::SetPlayMode( const TInt16 aPlayMode )
+ {
+ iPlayMode = aPlayMode;
+ }
+
+// -----------------------------------------------------------------------------
+// CAknsBmpAnimItemData::PlayMode
+// (commented in the header).
+// -----------------------------------------------------------------------------
+//
+EXPORT_C TInt16 CAknsBmpAnimItemData::PlayMode() const
+ {
+ return iPlayMode;
+ }
+
+// -----------------------------------------------------------------------------
+// CAknsBmpAnimItemData::SetFlash
+// (commented in the header).
+// -----------------------------------------------------------------------------
+//
+EXPORT_C void CAknsBmpAnimItemData::SetFlash( const TBool aFlash )
+ {
+ iFlash = aFlash;
+ }
+
+// -----------------------------------------------------------------------------
+// CAknsBmpAnimItemData::Flash
+// (commented in the header).
+// -----------------------------------------------------------------------------
+//
+EXPORT_C TBool CAknsBmpAnimItemData::Flash() const
+ {
+ return iFlash;
+ }
+
+// ============================ MEMBER FUNCTIONS ===============================
+
+// -----------------------------------------------------------------------------
+// C++ constructor can NOT contain any code, that might leave.
+// -----------------------------------------------------------------------------
+//
+CAknsStringItemData::CAknsStringItemData( const TAknsItemType aType )
+ : CAknsItemData( aType )
+ // CBase initializes iString(NULL)
+ {
+ }
+
+// -----------------------------------------------------------------------------
+// CAknsStringItemData::NewL
+// Two-phased constructor.
+// -----------------------------------------------------------------------------
+//
+EXPORT_C CAknsStringItemData* CAknsStringItemData::NewL()
+ {
+ return new (ELeave) CAknsStringItemData( EAknsITString );
+ }
+
+// -----------------------------------------------------------------------------
+// Destructor.
+// -----------------------------------------------------------------------------
+//
+CAknsStringItemData::~CAknsStringItemData()
+ {
+ delete iString;
+ }
+
+// -----------------------------------------------------------------------------
+// CAknsStringItemData::SetStringL
+// (commented in the header).
+// -----------------------------------------------------------------------------
+//
+EXPORT_C void CAknsStringItemData::SetStringL( const TDesC& aValue )
+ {
+ HBufC* temp = aValue.AllocL();
+ delete iString;
+ iString = temp;
+ temp = NULL;
+ }
+
+// -----------------------------------------------------------------------------
+// CAknsStringItemData::String
+// (commented in the header).
+// -----------------------------------------------------------------------------
+//
+EXPORT_C const TDesC& CAknsStringItemData::String() const
+ {
+ return *iString;
+ } //lint !e1763 Member exposed intentionally
+
+// End of File