/** Copyright (c) 2008 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: **/#ifndef C_ALFEXSTICKERSCONTROL_H#define C_ALFEXSTICKERSCONTROL_H/* Includes */#include <alf/alfcontrol.h>//TEMP#include <alf/alfdecklayout.h>/* Forward declarations. */class CAlfViewportLayout;class CAlfExStickerLayout;class CAlfImageLoaderUtil;/* Constants *///Number of example stickersconst TInt KStickerCount = 2;/** * @class CAlfExStickersControl * @discussion Control class for the AlfExSticker application. Handles creation of application elements * like viewport and sticker text visuals. Also handles user interaction with application elements. */class CAlfExStickersControl : public CAlfControl {public: /* Constructors and destructor. */ /** * @function NewL * @discussion Constructs a new CAlfExStickersControl class instance. A static factory method. * @param aEnv UI Accelerator Toolkit environment object. * @param aFs A handle to a file server session. * @result Control for the AlfExStickers application */ static CAlfExStickersControl* NewL(CAlfEnv& aEnv, RFs* aFs); /** * @function NewLC * @discussion Constructs a new CAlfExStickersControl class instance. A static factory method. * @param aEnv UI Accelerator Toolkit environment object. * @param aFs A handle to a file server session. * @result Control for the AlfExStickers application */ static CAlfExStickersControl* NewLC(CAlfEnv& aEnv, RFs* aFs); /** * @function ~CAlfExStickersControl * @discussion Destructor */ virtual ~CAlfExStickersControl(); /* Methods. */ /** * @function OfferEventL * @discussion Handles events from the framework * @param aEvent Catched event * @result Success or failure */ virtual TBool OfferEventL(const TAlfEvent& aEvent); /** * @function GetControl * @discussion Provides Control to stickers * @result CAlfControl to child visuals */ CAlfControl* GetControl(); //Control for the visuals CAlfControl* iControl;private: /* Constructors*/ /** * Constructs an instance of CAlfExStickersControl. * @note Protected because this constructor only needs to be called by * derived classes. Use the provided static factory methods instead. * @see NewL() * @see NewLC() */ CAlfExStickersControl(); /** * @function ConstructL * @discussion Second phase constructor * @param aEnv UI Accelerator Toolkit environment object. * @param aFs A handle to a file server session. */ void ConstructL(CAlfEnv& aEnv, RFs* aFs); /* Methods. */ /** * @function CreateViewportL * @discussion Creates Viewport layout to the application to act as the root layout. * Also function is used to set the size for the viewport and to enable scrolling, ie. * dragging interaction with the background */ void CreateViewportL(); /** * @function SetTextureManagerL * @discussion The function is used to find out path to applications graphical * resources and giving the path to Texture Manager. */ void SetTextureManagerL(); /** * @function LoadBackgroundImageL * @discussion Function uses Texture Manager to load board (application background) * texture from a png-file. Then creates new image visual to cover application background and * adds the loaded board texture in the visual. */ void LoadBackgroundImageL(); /** * @function CreateSVGTextureL * @discussion Function used to create SVG texture from SVG file * @param aFileName SVG file filename. * @param aSize Texture size * @param aImageLoaderUtil Image loader utility. * @result Reference to created texture. This texture is owned by texture manager. */ CAlfTexture& CreateSVGTextureL(const TFileName& aFileName, TSize& aSize, CAlfImageLoaderUtil* aImageLoaderUtil); /** * @function CreateStickersL * @discussion Function used to create several stickers and applying the needed * changes into the visuals. * * Easiest way to create text visual would be to use: * CAlfTextVisual* visual = CAlfTextVisual::AddNewL(*this, iPlainLayout); * We have however created new class for the text visual (alfexsticker). */ void CreateStickersL(); /** * @function LoadStickerImageL * @discussion Function used to load sticker background image from SVG file. * @param aIndex An index number of sticker where background is loaded. */ void LoadStickerImageL(TInt aIndex); /* Member variables */ //UI Accelerator Toolkit environment object CAlfEnv* iEnv; //Handle to file server session RFs* iFs; //Texture path TFileName iPrivateFolderPath; //Layouts && Co CAlfViewportLayout* iViewPort; CAlfLayout* iPlainLayout; //Application view and viewport sizes TSize iVirtualSize; TSize iLayoutsize; //Sticker array CAlfExStickerLayout* iStickerArray[KStickerCount]; //Default timed values TAlfTimedValue x; TAlfTimedValue y; //Member data needed to handle interaction, like drag and drop CAlfVisual* iOnVisual; CAlfExStickerLayout* iSelectedDeck; TBool iDraggingVisual; TPoint iStartVisualPos; // Original position of dragged visual. TPoint iStartDisplayPoint; // Point of display for Pointer Down. TAlfRealPoint iDraggedPosition; TAlfRealPoint iViewPos; TBool iHasBeenDragged; //Image loader array. RArray<CAlfImageLoaderUtil*> iImageLoaderUtilArray; };#endif // C_ALFEXSTICKERSCONTROL_H