diff -r 000000000000 -r 84ad3b177aa3 browserui/browser/BrowserAppInc/BrowserShortcutKeyMap.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/browserui/browser/BrowserAppInc/BrowserShortcutKeyMap.h Mon Mar 30 12:49:49 2009 +0300 @@ -0,0 +1,189 @@ +/* +* Copyright (c) 2007 Nokia Corporation and/or its subsidiary(-ies). +* All rights reserved. +* This component and the accompanying materials are made available +* under the terms of the License "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: Implements Browser Shortcut Key Map +* +*/ + + +#ifndef BROWSERSHORTCUTKEYMAP_H +#define BROWSERSHORTCUTKEYMAP_H + +// INCLUDES +#include + +// MACROS + +// FORWARD DECLARATIONS +class CBrowserContentViewContainer; +class MApiProvider; + +// CLASS DECLARATION +/** +* Encapsulate Keymap Cell Info +* @since 5.0 +*/ +class TKeymapCellData + { +public: + // C++ constructor and destructor to initialize/delete pointer data members + TKeymapCellData(); + ~TKeymapCellData(); + + // data + HBufC* keyText; + HBufC* lineText; + TInt cmdRscId; + CFbsBitmap* keyBitmapImage; + CFbsBitmap* keyBitmapMask; + + TRect r; // Main rect for cell + TRect rCell; // Cell contents rect (includes margin) + TRect rKey; // key indicator rect + TRect rLine1; // text line 1 rect + TRect rLine2; // text line 2 rect + TRect rIcon; // icon rect + }; + +/** +* Create and manage the keymap sprite +* @since 5.0 +*/ + +class CBrowserShortcutKeyMap: public CBase + { + public: // Constructor and destructor + /** + * Two-phased constructor. + */ + static CBrowserShortcutKeyMap* NewL( CBrowserContentViewContainer* aContentViewContainer, MApiProvider& aApiProvider ); + + /** + * Destructor. + */ + virtual ~CBrowserShortcutKeyMap(); + + private: // Constructors + /** + * C++ default constructor. + */ + CBrowserShortcutKeyMap( CBrowserContentViewContainer* aContentViewContainer, MApiProvider& aApiProvider ); + + /** + * By default Symbian 2nd phase constructor is private. + */ + void ConstructL(); + + private: // New functions + + /** + * @since 5.0 + * @param + * @return + * Initialize Keymap properties + */ + void InitKeymap(); + + /** + * @since 5.0 + * @param + * @return + * Initialize Keymap data kept for each cell of the map + */ + void InitCellDataL(); + + /** + * @since 5.0 + * @param + * @return + * Create the bitmap and context that will be used for the sprite + */ + void CreateBitmapAndContextL(); + + /** + * @since 5.0 + * @param + * @return + * Calculate the layout of the sprite rects for a given cell + */ + void CreateCellLayout(const TInt& aCellIndex, const TPoint& aUpperL, const TSize& aSize); + + /** + * @since 5.0 + * @param + * @return + * Draw the sprite rects to the sprite bitmap + */ + void CreateSpriteCellL(const TInt& aCellIndex); + + /** + * @since 5.0 + * @param + * @return + * Construct the Sprite from the bitmap and context + */ + void ConstructSprite(); + + /** + * @since 5.0 + * @param + * @return + * Utility: Get the folder where the canned image is located + */ + HBufC* GetCannedImageDirL(); + + /** + * @since 5.0 + * @param + * @return + * Utility: get the SVG bitmaps, etc, given its filename + */ + void LoadSvg( TInt aImageId, const TDesC& aFileName, CFbsBitmap*& aImage, CFbsBitmap*& aImageMask ); + + /** + * @since 7.x + * @param + * @return + * Utility: create dimmed versions of bitmaps aImage + */ + void CreateDimBitmapL( CFbsBitmap* aImage, + CFbsBitmap* aImageMask, + CFbsBitmap*& aDimImage, + CFbsBitmap*& aDimImageMask); + + + private: // Data + CBrowserContentViewContainer* iContentViewContainer; // not owned + MApiProvider& iApiProvider; // not owned, used to query browser prefs + + TRect iTargetRect; // Main rect of the keymap, sized according to parent container + + const CFont* iKeyFont; // not owned, font used for the key indicator text + const CFont* iLineFont; // not owned, font used for the function description + RPointerArray iCellData; // data structure to hold data for each key cell + + HBufC* iSvgMbmFile; // holds icon svg + + /* sprite data */ + RWsSprite iSprite; + CFbsBitmapDevice* iSpriteBitmapDevice; // owned + CFbsBitGc* iSpriteBitmapContext; // owned + CFbsBitmap* iSpriteBitmap; // owned + CFbsBitmapDevice* iSpriteMaskBitmapDevice; // owned + CFbsBitGc* iSpriteMaskBitmapContext; // owned + CFbsBitmap* iSpriteMaskBitmap; // owned + }; + +#endif // BROWSERSHORTCUTKEYMAP_H + +// End of File