diff -r 8e5f6eea9c9f -r 5b3385a43d68 photosgallery/viewframework/views/cloudview/inc/glxinfobubble.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/photosgallery/viewframework/views/cloudview/inc/glxinfobubble.h Wed Sep 01 12:33:26 2010 +0100 @@ -0,0 +1,312 @@ +/* +* Copyright (c) 2008-2009 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: Info Bubble Implementation + * +*/ + + + + +#ifndef C__GLXINFOBUBBLE_H__ +#define C__GLXINFOBUBBLE_H__ + +//Includes + +#include //base class for Alf control +#include //for TAlfImage +#include //for interface MGlxSkinChangeObserver +#include + +#include + +//Forward Declaration +class CGlxUiUtility; +class CAlfAnchorLayout; +class CAlfBorderBrush; +class CAlfDeckLayout; +class CAlfTexture; +class CAlfImageVisual; +class CAlfTextVisual; + +/** + * CGlxInfoBubble is a common calss based on Alf Control. + *It draws a bitmap and two lines on text. + *It has a position logic of its own. + */ +class CGlxInfoBubble : public CAlfControl,public MGlxSkinChangeObserver, + public MGlxTextureObserver + { +public: + + /* Constructors. */ + + /** + * @Default c++ contructor + * @since S60 3.2 + * Perform the two phase construction + * @param aEnv - Env Variable of Alf + */ + IMPORT_C CGlxInfoBubble(); + + /** + * @function ConstructL + * @since S60 3.2 + * Perform the two phase construction + * @param aOwnerControl - Owner control which will be the parent of Infobubble + * @param aEnv - Env Variable of Alf + */ + IMPORT_C void BaseConstructL(CAlfControl &aOwnerControl, CAlfEnv &aEnv); + + /** + * Destructor. + */ + IMPORT_C virtual ~CGlxInfoBubble(); + +protected: + + /** + * @function DisplayBubbleL + * @since S60 3.2 + * @param aPos - Position of Visual for which InfoBubble will be shown + * @param aTexture - Thumbnail texture associated with an item + * @param aTitle - title of a tag + * @param aSubTitle - subtitle of a tag + */ + IMPORT_C void DisplayBubbleL(TPoint aPos, CAlfTexture& aTexture, + const TDesC& aTitle, const TDesC& aSubTitle); + + /** + * @function UpdateTextureL + * @since S60 3.2 + * @param aTexture - AlfTexture associated with an item thumbnail + */ + IMPORT_C void UpdateTextureL(CAlfTexture& aTexture); + + + /** + * @function DisapperBubble + * Animates when bubble becomes out of context + * @since S60 3.2 + */ + IMPORT_C void DisappearBubble(); + + /** + * @function CreateThumbnailTextureL + * creates the thumbnailtexture + * @param aMedia,media + * @param aIdSpaceId,Id-space identifier + * @param aSize,thumbnail size + */ + IMPORT_C CAlfTexture& CreateThumbnailTextureL(const TGlxMedia& aMedia, + const TGlxIdSpaceId& aIdSpaceId,const TSize& aSize); + + /** + * @function ResetImage() + * Resets the image + */ + IMPORT_C void ResetImage(); + +private: // From MGlxTextureObserver + void TextureContentChangedL( TBool aHasContent, CAlfTexture* aNewTexture ); + +private: + + /** + * @function DrawBubbleFirstQuad + * @since S60 3.2 + * @param aReferencepos - reference postion for tail + * @param aQuadrantId - determines the bubble type + */ + void DrawBubbleFirstQuadL(TPoint aReferencepos); + + + /** + * @function DrawBubbleSecondQuad + * @since S60 3.2 + * @param aReferencepos - reference postion for tail + * @param aQuadrantId - determines the bubble type + */ + void DrawBubbleSecondQuadL(TPoint aReferencepos); + + + /** + * @function DrawBubbleThirdQuad + * @since S60 3.2 + * @param aReferencepos - reference postion for tail + * @param aQuadrantId - determines the bubble type + */ + void DrawBubbleThirdQuadL(TPoint aReferencepos); + + + /** + * @function DrawBubbleFourthQuad + * @since S60 3.2 + * @param aReferencepos - reference postion for tail + * @param aQuadrantId - determines the bubble type + */ + void DrawBubbleFourthQuadL(TPoint aReferencepos); + + + /** + * @function DrawBubbleLeftComponent + * @since S60 3.2 + */ + void DrawBubbleLeftComponentL(); + + + /** + * @function DrawBubbleRightComponent + * @since S60 3.2 + */ + void DrawBubbleRightComponentL(); + + + /** + * @function DrawBubbleExtemsibleComponent + * @since S60 3.2 + * @param aQuadrantId - determines the bubble type + */ + void DrawBubbleExtensibleComponentL(TInt aSlots); + + + /** + * @function DrawBubbleTailComponent() + * @since S60 3.2 + */ + void DrawBubbleTailComponentL(); + + + /** + * @function ResetBubbleComponent() + * @since S60 3.2 + */ + void ResetBubbleComponent(); + + + /** + * @function LoadTailAssembly() + * @since S60 3.2 + */ + void LoadTailAssemblyL(TInt aTailEnumId, TInt aTailStripEnumId); + + void CreateItemContainerLayoutL(); + + void SetVariableVisualCountL(); + + //from MGlxSkinChangeObserver + void HandleSkinChanged(); + + /** + * @function SetThumbnailBorderColor() + * @since S60 3.2 + * Sets the color for thumbnail border + */ + void SetThumbnailBorderColor(); + +protected: + /**UI Utility */ + CGlxUiUtility* iUiUtility; + +private: + //Enum for deciding the location of bubble + enum TGlxBubbleQuadrantFlags + { + EQuadrantFirst = 0, + EQuadrantSecond , + EQuadrantThird, + EQuadrantFourth + }; + + /**Anchor layout for Bubble container */ + CAlfAnchorLayout *iInfoBubbleContainer; + + /**Anchor layout for Bubble */ + CAlfAnchorLayout *iInfoBubble; + + /**deck layout which is base layout for Bubble */ + CAlfDeckLayout *iInfoDeck; + + /**Visual for centre Image of Bubble */ + CAlfImageVisual *iDeckCentreimage; + + /**Visual for first line of text in Bubble */ + CAlfTextVisual *iBubbleTextTitle; + + /**Visual for second line of text in Bubble */ + CAlfTextVisual *iBubbleTextSubTitle; + + /**Image variable of bubble components */ + TAlfImage iImageThumb, iImageBubbleLeft, iImageBubbleRight; + TAlfImage iImageBubbleStrip, iImageBubbleExpand, iImageBubbleTail; + + /**Border brush */ + CAlfBorderBrush *iThumbnailBorderBrush; + + /**Visual array for expandable middle bubble component */ + RPointerArray iBubbleExpandStrip; // + + /**Visual for left arc of Bubble */ + CAlfImageVisual *iBubbleLeft; + + /**Visual for rightarc of Bubble */ + CAlfImageVisual *iBubbleRight; + + /**Visual for strip that connects to tail of Bubble */ + CAlfImageVisual *iBubbleTailStrip; + + /**Visual for tail of Bubble */ + CAlfImageVisual *iBubbleTail; + + /**number of times centre bubble image is needed */ + TReal iRoudedSlotValue; + + /**flag to decide iInfoBubbleContainer position */ + TInt iTailPositionUp; + + /**flag to indicate whether tail will be drawn on normal position or not */ + TInt iTailNormalPosition; + + /**point from which the drawing of bubble will start */ + TPoint iBubbleRectDrawPoint; + + /**Storing screen width */ + TInt iScreenWidth; + + /** storing screen height*/ + TInt iScreenHeight; + + /**offset for bubble drawing */ + TInt iPositionOffset; + + /** Stores Size of bubble*/ + TSize iBubbleSize; + + /**stores counter of bubble component drawn */ + TInt iBubbleComponentCount; + + /**Increment variable for X axis */ + TPoint iPos; + + TInt iBubbleXaxisInc; + + //mif file + TFileName iMifFile; + CAlfTexture *iTexture; + + /**temporary object to store Bubble Text*/ + CAlfTextVisual *iTempTitleText; + }; + +#endif // C__GLXINFOBUBBLE_H__ +