uifw/AvKon/inc/AknIncallStatusBubble.h
changeset 0 2f259fa3e83a
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/uifw/AvKon/inc/AknIncallStatusBubble.h	Tue Feb 02 01:00:49 2010 +0200
@@ -0,0 +1,298 @@
+/*
+* Copyright (c) 2002 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: 
+*     Declares container control for application.
+*
+*/
+
+
+#ifndef INCALLSTATUSBUBBLE_H
+#define INCALLSTATUSBUBBLE_H
+
+// INCLUDES
+#include <coecntrl.h>
+#include <avkon.hrh>
+
+#include <callstatus.mbg>
+
+#include    <AknsItemID.h>
+#include    <AknsConstants.h>
+#include    <AknsItemData.h>
+   
+// FORWARD DECLARATIONS
+class CIncallAnim;
+class CEikImage;
+class CIncallMuted;
+
+// CLASS DECLARATION
+
+/**
+*  CIncallStatusBubble  container control class.
+*  
+*/
+NONSHARABLE_CLASS(CIncallStatusBubble) : public CCoeControl
+    {
+    public:
+        
+    /**
+    *   Bit             Explanation
+    *   0 and 1         Call state
+    *   2               No Ciphering
+    *   3               Is muted               
+    *   4               Is Visible
+    *   5               Is a Fax       
+    *   6               Is a Data call  
+    *   7               Is a Hscsd data call  
+    *   8               Line 2 indication
+    *   9               Is a Video call
+    *   10              Is an emergency call
+    *   11              Is a VoIP call
+    *   12              Is a full screen touch input window show
+    *   12              Is a full screen touch input window Hide
+
+    *   ...
+    *   ...
+    *   31              Reserved for incall bubble notifier internal use. 
+    */
+    enum TCallStatusBubbleFlags 
+        {
+        ESBAlerting     = EAknStatusBubbleAlerting,     //  One of
+        ESBActive       = EAknStatusBubbleActive,       //  these
+        ESBOnHold       = EAknStatusBubbleOnHold,       //  to set 
+        ESBDisconnected = EAknStatusBubbleDisconnected, //  the call state  
+        ESBNoCiphering  = EAknStatusBubbleNoCiphering,      
+        ESBMuted        = EAknStatusBubbleMuted,
+        ESBVisible      = EAknStatusBubbleVisible,
+        ESBFax          = EAknStatusBubbleFax,
+        ESBData         = EAknStatusBubbleData,
+        ESBDataHscsd    = EAknStatusBubbleDataHscsd,
+        ESBLine2        = EAknStatusBubbleLine2,
+        ESBVideo        = EAknStatusBubbleVideo,
+        ESBEmergency    = EAknStatusBubbleEmergency,    
+        ESBVoIPCall     = EAknStatusBubbleVoIP,          
+        ESBTouchShow    = EAknStatusBubbleInputShow,
+        ESBTouchHide    = EAknStatusBubbleInputHide,
+        
+        ESBReservedInternal = EAknStatusBubbleReservedInternal         
+        };
+
+    public: // Constructors and destructor
+
+        /**
+        * Constructor
+        * @aRect Used rectangle
+        * @return New instance
+        */
+        static CIncallStatusBubble* NewL( const TRect& aRect );
+
+        /**
+        * Destructor.
+        */
+        ~CIncallStatusBubble();
+
+    public: // New functions
+
+        /**
+        * Use this function to set the state of the bubble
+        * @param aFlags Bits that define the outlook.
+        */
+        void SetFlags( const TInt& aFlags );
+
+        /**
+        * Use this function to get the state of the bubble
+        * @return Bits that define the outlook.
+        */
+    #ifdef __WINS__
+        const TInt Flags();
+    #else
+    	TInt Flags();
+    #endif
+
+        /**
+        * Fades incall status bubble window group.
+        *
+        * @param aFaded Fade state to be set.
+        */
+        void SetFaded(TBool aFaded);
+
+        /**
+        * Gets given image (skinned if possible)
+        * @param aImage This is where the bitmaps are set.
+        * @param aImageId Id of the bitmap (see enum in AknIncallStatusBubble.h)
+        * @param aImageMaskId Id of mask. KErrNotFound(-1) stands for 
+        *                     no mask.
+        */ 
+        void GetImage( 
+            CEikImage& aImage, 
+            const TInt& aImageId,
+            const TInt aImageMaskId = KErrNotFound );
+
+    public: // Functions from base classes
+
+        /**
+        * Use this function to set the place of the bubble
+        * @param aRect A rectangle which define the drawing area.
+        */
+        void SetRect( const TRect& aRect );
+
+        /**
+        * From CCoeControl,HandleResourceChange.
+        */
+        void HandleResourceChange( TInt aType );
+
+        /**
+        * From CCoeControl,HandlePointerEventL.
+        */
+        void HandlePointerEventL(const TPointerEvent& aPointerEvent);
+    
+    private: // Functions from base classes
+
+        /**
+        * From CoeControl,SizeChanged.
+        */
+        void SizeChanged();
+
+        /**
+        * From CoeControl,CountComponentControls.
+        */
+        TInt CountComponentControls() const;
+
+        /**
+        * From CCoeControl,ComponentControl.
+        */
+        CCoeControl* ComponentControl( TInt aIndex ) const;
+
+        /**
+        * From CCoeControl,Draw.
+        */
+        void Draw( const TRect& aRect ) const;
+
+       
+    private: //new functions
+
+        // Data
+        struct SSkinnedImage
+            {
+            public:
+                SSkinnedImage(): iId( KAknsIIDNone ), iItemData( NULL ) {}
+                ~SSkinnedImage() { delete iItemData; }
+
+            public:
+                TAknsItemID iId;
+                CAknsItemData* iItemData;
+            };
+
+
+        CIncallStatusBubble();
+
+        /**
+        * EPOC default constructor.
+        * @param aRect Frame rectangle for container.
+        */
+        void ConstructL( const TRect& aRect );
+
+        /**
+        * Loads images into cache.
+        */
+        void LoadImagesL();
+
+        /**
+        * Creates new CEikImage instance
+        * @return New instance. Ownership given.
+        */
+        CEikImage* CreateNewEikImageL() const;
+
+        /**
+        * Selects used bitmaps according the state flags.
+        */
+        void SelectImages();
+        
+        /**
+        * Maps bitmap enumeration into skin id
+        * @param aBmIcon Bitmap enumeration from AknIncallStatusBubble.h
+        * @param aID Skinned ID.
+        */
+        static void MapEnumToSkin( 
+            const TInt aBmIcon, TAknsItemID& aID );
+
+        /**
+        * Gets skin data for given ID
+        * @param aBmIcon Bitmap enumeration from AknIncallStatusBubble.h
+        * return Skin data. NULL if not found.
+        */
+        CAknsItemData* GetSkinForIcon( const TInt aBmIcon );
+
+        /**
+        * Allocated new skinned image into the cache. Leaves in OOM case.
+        * @param aId Skin id.
+        * @return Skin data.
+        */
+        CAknsItemData* LoadAndAppendSkinL( const TAknsItemID& aId );
+
+        /**
+        * Sets skin to image if found.
+        * @param aImage Used image.
+        * @param aBmIcon Bitmap enumeration from CallStatus.mbg
+        * @return Was skin set? ETrue if skin found and set. Else EFalse.
+        */
+        TBool GetSkin( CEikImage& aImage, const TInt aBmIcon );
+
+        /**
+        * Comparision function for two skin item
+        */
+        static TInt CompareSkinnedData( 
+            const SSkinnedImage& aSkin1, 
+            const SSkinnedImage& aSkin2 );
+
+        /**
+        * Loads a non-masked image and appends it in the image array.
+        */
+        void LoadImageL( TInt aBitmapId );
+
+        /**
+        * Loads a masked image and appends it in the image array.
+        */
+        void LoadImageL( TInt aBitmapId, TInt aMaskId );
+
+        /**
+        * Creates color skinned bitmap.
+        */
+        CFbsBitmap* CreateSkinnedColourBitmapL();
+
+    private: //data
+      
+        TInt                        iFlags;
+
+        CArrayPtrFlat<CFbsBitmap>*  iBitmaps;
+
+        RWindowGroup                iMyWindowGroup;
+
+        CEikImage*                  iSmallCallIndication;
+        CIncallAnim*                iSmallIndiAnim;
+        CEikImage*                  iBubble;
+        CEikImage*                  iTypeIndication1;
+        CEikImage*                  iTypeIndication2;
+        CEikImage*                  iCyphOffIcon;
+
+        CIncallMuted*               iMutedIcon;
+
+        RPointerArray<SSkinnedImage> iSkins;
+        TLinearOrder<SSkinnedImage> iOrder;
+        CFbsBitmap* iSkinnedColourBitmap;
+        TBool iPressedDown;         // Whether we've pressed down the incall bubble. 
+    };
+
+#endif // INCALLSTATUSBUBBLE_H
+
+// End of File