browserui/browser/BrowserAppInc/BrowserShortcutKeyMap.h
branchRCL_3
changeset 48 8e6fa1719340
parent 0 84ad3b177aa3
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/browserui/browser/BrowserAppInc/BrowserShortcutKeyMap.h	Wed Sep 01 12:31:04 2010 +0100
@@ -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 <e32base.h>
+
+// 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<TKeymapCellData> 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