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