--- /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