williamr@4: /* williamr@4: * Copyright (c) 2002-2007 Nokia Corporation and/or its subsidiary(-ies). williamr@4: * All rights reserved. williamr@4: * This component and the accompanying materials are made available williamr@4: * under the terms of "Eclipse Public License v1.0" williamr@4: * which accompanies this distribution, and is available williamr@4: * at the URL "http://www.eclipse.org/legal/epl-v10.html". williamr@4: * williamr@4: * Initial Contributors: williamr@4: * Nokia Corporation - initial contribution. williamr@4: * williamr@4: * Contributors: williamr@4: * williamr@4: * Description: Defines the item id class used to identify the skin items. williamr@4: * williamr@4: */ williamr@4: williamr@4: williamr@4: #ifndef AKNSITEMID_H williamr@4: #define AKNSITEMID_H williamr@4: williamr@4: // INCLUDES williamr@4: #include williamr@4: #include williamr@4: williamr@4: // DATA TYPES williamr@4: williamr@4: /** williamr@4: * Type enumeration for skin items. williamr@4: * williamr@4: * @since 2.0 williamr@4: */ williamr@4: enum TAknsItemType williamr@4: { williamr@4: /** williamr@4: * Unknown type, used by CAknsItemDef. williamr@4: */ williamr@4: EAknsITUnknown =0, williamr@4: williamr@4: /** williamr@4: * Bitmap type, used by CAknsBitmapItemData and CAknsBitmapItemDef. williamr@4: */ williamr@4: EAknsITBitmap =1, williamr@4: williamr@4: /** williamr@4: * Masked bitmap type, used by CAknsMaskedBitmapItemData and williamr@4: * CAknsMaskedBitmapItemDef. williamr@4: */ williamr@4: EAknsITMaskedBitmap =2, williamr@4: williamr@4: /** williamr@4: * Color table type, used by CAknsColorTableItemData and williamr@4: * CAknsColorTableItemDef. williamr@4: */ williamr@4: EAknsITColorTable =3, williamr@4: williamr@4: /** williamr@4: * Image table type, used by CAknsImageTableItemData and williamr@4: * CAknsImageTableItemDef. williamr@4: */ williamr@4: EAknsITImageTable =4, williamr@4: williamr@4: /** williamr@4: * Image type, used by CAknsImageItemData and CAknsImageItemDef. williamr@4: */ williamr@4: EAknsITImage =5, williamr@4: williamr@4: /** williamr@4: * Bitmap animation type, used by CAknsBmpAnimItemData and CAknsBmpAnimItemDef. williamr@4: */ williamr@4: EAknsITBmpAnim =6, williamr@4: williamr@4: /** williamr@4: * String property type, used by CAknsStringItemData. williamr@4: * williamr@4: * @since 2.6 williamr@4: */ williamr@4: EAknsITString =7, williamr@4: williamr@4: /** williamr@4: * Scalable item effect queue type, used by CAknsEffectQueueItemData. williamr@4: * williamr@4: * @since 2.8 williamr@4: */ williamr@4: EAknsITEffectQueue =8, williamr@4: williamr@4: /** williamr@4: * Animation type, used by CAknsAnimationItemData williamr@4: */ williamr@4: EAknsITAnimation =9 williamr@4: }; williamr@4: williamr@4: /** williamr@4: * Image attribute enumeration for image skin items. williamr@4: * williamr@4: * @since 2.0 williamr@4: */ williamr@4: enum TAknsImageAttribute williamr@4: { williamr@4: /** williamr@4: * No attribute defined. williamr@4: * @since 2.0 williamr@4: */ williamr@4: EAknsImageAttributeNone =0x00, williamr@4: williamr@4: /** williamr@4: * Image should be placed acording to the given coordinates. williamr@4: * Currently unsupported. williamr@4: * @since 2.0 williamr@4: */ williamr@4: EAknsImageAttributeCoords =0x01, williamr@4: williamr@4: /** williamr@4: * Image size should stretched to the given size. williamr@4: * Currently used only with application icons as a search shortcut. williamr@4: * @since 2.0 williamr@4: */ williamr@4: EAknsImageAttributeSize =0x02, williamr@4: williamr@4: /** williamr@4: * Image should be stretched to cover the entire layout area. williamr@4: * Aspect ratio is not preserved. williamr@4: * @since 2.0 williamr@4: */ williamr@4: EAknsImageAttributeStretch =0x04, williamr@4: williamr@4: /** williamr@4: * Image should be tiled (in both directions) to fill the area. williamr@4: * @since 2.0 williamr@4: */ williamr@4: EAknsImageAttributeTile =0x08, williamr@4: williamr@4: /** williamr@4: * Image should be aligned according to the given parameter. williamr@4: * @since 2.0 williamr@4: */ williamr@4: EAknsImageAttributeAlign =0x10, williamr@4: williamr@4: /** williamr@4: * Image should be scaled to fill the area maintaining the aspect williamr@4: * ratio. williamr@4: * Currently unsupported. williamr@4: * @since 2.0 williamr@4: */ williamr@4: EAknsImageAttributeScale =0x20, williamr@4: williamr@4: /** williamr@4: * Image should be tiled in X-axis direction to fill the area. williamr@4: * @since 2.8 williamr@4: */ williamr@4: EAknsImageAttributeTileX =0x40, williamr@4: williamr@4: /** williamr@4: * Image should be tiled in Y-axis direction to fill the area. williamr@4: * @since 2.8 williamr@4: */ williamr@4: EAknsImageAttributeTileY =0x80, williamr@4: williamr@4: /** williamr@4: * The item is already scalability-aware and backward compatibility williamr@4: * should not be applied to it. williamr@4: * @internal williamr@4: * @since 2.8 williamr@4: */ williamr@4: EAknsImageAttributeNBC =0x100 williamr@4: }; williamr@4: williamr@4: /** williamr@4: * Image alignment enumeration for image skin items. williamr@4: * williamr@4: * @since 2.0 williamr@4: */ williamr@4: enum TAknsImageAlignment williamr@4: { williamr@4: EAknsImageAlignNone =0x00, williamr@4: EAknsImageAlignVTop =0x01, williamr@4: EAknsImageAlignVBottom =0x02, williamr@4: EAknsImageAlignVCenter =0x04, williamr@4: EAknsImageAlignHLeft =0x08, williamr@4: EAknsImageAlignHRight =0x10, williamr@4: EAknsImageAlignHCenter =0x20, williamr@4: EAknsImageAlignTL =EAknsImageAlignVTop|EAknsImageAlignHLeft, williamr@4: EAknsImageAlignTR =EAknsImageAlignVTop|EAknsImageAlignHRight, williamr@4: EAknsImageAlignTC =EAknsImageAlignVTop|EAknsImageAlignHCenter, williamr@4: EAknsImageAlignBL =EAknsImageAlignVBottom|EAknsImageAlignHLeft, williamr@4: EAknsImageAlignBR =EAknsImageAlignVBottom|EAknsImageAlignHRight, williamr@4: EAknsImageAlignBC =EAknsImageAlignVBottom|EAknsImageAlignHCenter, williamr@4: EAknsImageAlignCL =EAknsImageAlignVCenter|EAknsImageAlignHLeft, williamr@4: EAknsImageAlignCR =EAknsImageAlignVCenter|EAknsImageAlignHRight, williamr@4: EAknsImageAlignCC =EAknsImageAlignVCenter|EAknsImageAlignHCenter, williamr@4: EAknsImageAlignVMask =EAknsImageAlignVTop|EAknsImageAlignVBottom| williamr@4: EAknsImageAlignVCenter, williamr@4: EAknsImageAlignHMask =EAknsImageAlignHLeft|EAknsImageAlignHRight| williamr@4: EAknsImageAlignHCenter williamr@4: }; williamr@4: williamr@4: williamr@4: // FORWARD DECLARATIONS williamr@4: williamr@4: class CFbsBitmap; williamr@4: williamr@4: // CLASS DECLARATION williamr@4: williamr@4: /** williamr@4: * Item identifier used to identify items supplied through skin interfaces. williamr@4: * Item ID consists of two integers: major and minor parts of the ID. williamr@4: * williamr@4: * Note that only LinearOrder() member function requires linking against williamr@4: * the library, all the other methods are inlined. williamr@4: * williamr@4: * @lib AknSkinSrv.lib williamr@4: * williamr@4: * @since 2.0 williamr@4: */ williamr@4: class TAknsItemID williamr@4: { williamr@4: public: // New functions williamr@4: williamr@4: /** williamr@4: * Sets specified major and minor parts. williamr@4: * williamr@4: * @param aMajor Major part of the item ID. williamr@4: * williamr@4: * @param aMinor Minor part of the item ID. williamr@4: */ williamr@4: inline void Set( const TInt aMajor, const TInt aMinor ); williamr@4: williamr@4: /** williamr@4: * Sets specified major and minor parts williamr@4: * where major part is given as a UID. williamr@4: * williamr@4: * @param aMajor Major part of the item ID as a UID. williamr@4: * williamr@4: * @param aMinor Minor part of the item ID. williamr@4: */ williamr@4: inline void Set( const TUid aMajor, const TInt aMinor ); williamr@4: williamr@4: /** williamr@4: * Sets major and minor parts according to the given item ID. williamr@4: * williamr@4: * @param aID Item ID to be used to get the values. williamr@4: */ williamr@4: inline void Set( const TAknsItemID& aID ); williamr@4: williamr@4: /** williamr@4: * Determines the order of two TAknsItemID objects. williamr@4: * Implements an algorithm that determines the order of two item ID williamr@4: * objects. williamr@4: * williamr@4: * @param aFirst Constant reference to the first object to be compared. williamr@4: * williamr@4: * @param aSecond Constant reference to the second object to be williamr@4: * compared. williamr@4: * williamr@4: * @return 0 if the two objects are equal, negative value if the first williamr@4: * object is less than the second and positive value if the first williamr@4: * object is greater than the second. williamr@4: * williamr@4: * @par Implementation details: williamr@4: * To improve binary search, current implementation first compares minor williamr@4: * part and after that the major part of the item ID. Since most lists williamr@4: * have several objects with equal major parts this makes the algorithm williamr@4: * more efficient. williamr@4: */ williamr@4: IMPORT_C static TInt LinearOrder( williamr@4: const TAknsItemID& aFirst, const TAknsItemID& aSecond ); williamr@4: williamr@4: public: // Data williamr@4: williamr@4: TInt iMajor; //!< Major part of the item ID as an integer. williamr@4: TInt iMinor; //!< Minor part of the item ID as an integer. williamr@4: williamr@4: }; williamr@4: williamr@4: // DATA TYPES (continued) williamr@4: williamr@4: /** williamr@4: * Simple array of item ID objects. williamr@4: */ williamr@4: typedef RArray RAknsItemIDArray; williamr@4: williamr@4: // FUNCTION PROTOTYPES williamr@4: williamr@4: /** williamr@4: * C++ equal operator. williamr@4: * Checks whether two item ID objects (i.e. their major and minor parts) williamr@4: * have identical content. williamr@4: * williamr@4: * @param aFirst First object to be compared. williamr@4: * williamr@4: * @param aSecond Second object to be compared. williamr@4: * williamr@4: * @return true if objects have identical content, false otherwise. williamr@4: */ williamr@4: inline TBool operator==( const TAknsItemID& aFirst, const TAknsItemID& aSecond ); williamr@4: williamr@4: /** williamr@4: * C++ not equal operator. williamr@4: * Checks whether two item ID objects (i.e. their major and minor parts) williamr@4: * have identical content. williamr@4: * williamr@4: * @param aFirst First object to be compared. williamr@4: * williamr@4: * @param aSecond Second object to be compared. williamr@4: * williamr@4: * @return false if objects have identical content, true otherwise. williamr@4: */ williamr@4: inline TBool operator!=( const TAknsItemID& aFirst, const TAknsItemID& aSecond ); williamr@4: williamr@4: // INLINED MEMBERS williamr@4: williamr@4: #include "AknsItemID.inl" williamr@4: williamr@4: #endif // AKNSITEMID_H williamr@4: williamr@4: // End of File