webengine/webkitutils/ToolBar/ToolBar.h
changeset 0 dd21522fd290
child 36 0ed94ceaa377
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/webengine/webkitutils/ToolBar/ToolBar.h	Mon Mar 30 12:54:55 2009 +0300
@@ -0,0 +1,558 @@
+/*
+* Copyright (c) 2006 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:  The Toolbar class
+*
+*/
+
+
+#ifndef __TOOLBAR
+#define __TOOLBAR
+
+//  INCLUDES
+#include <e32base.h>
+#include <bitstd.h>
+#include <W32STD.H>
+#include <COEDEF.H>
+#include <AknsConstants.h>
+#include <AknsItemID.h>
+#include <AknsConstants.h>
+#include "BrCtlDefs.h"
+#include <eikmobs.h>
+#include <webkitutils.rsg>
+// CONSTANTS
+
+// MACROS
+
+// DATA TYPES
+
+// FUNCTION PROTOTYPES
+
+// FORWARD DECLARATIONS
+class CToolBarButton;
+class CPeriodic;
+class CWindowGc;
+class CCoeControl;
+class CFbsBitmapDevice;
+class TBrCtlSubscribeTo;
+class CGulIcon;
+class CEikButtonGroupContainer;
+
+// CLASS DECLARATION
+
+/**
+*
+*
+*  @lib webkit.dll
+*  @since 3.1
+*/
+class MToolBarCallback
+    {
+    public:
+        /**
+        *
+        * @since 3.1
+        * @param
+        * @return
+        */
+        virtual TPoint CursorPosition() = 0;
+
+        /**
+        *
+        * @since 3.1
+        * @param
+        * @return
+        */
+        virtual void SetAndUpdateCursorPosition(const TPoint& aPoint) = 0;
+
+        /**
+        *
+        * @since 3.1
+        * @param
+        * @return
+        */
+        virtual const RPointerArray<TBrCtlSubscribeTo>& SubscribeToMenuItemsL() = 0;
+
+        /**
+        *
+        * @since 3.1
+        * @param
+        * @return
+        */
+        virtual CCoeControl& View() = 0;
+        
+        /**
+        *
+        * @since 3.1
+        * @param
+        * @return
+        */
+        virtual CCoeControl& CCoeControlParent() = 0;
+
+        /**
+        *
+        * @since 3.1
+        * @param
+        * @return
+        */
+        virtual void CloseToolBarL() = 0;
+
+        /**
+        *
+        * @since 3.1
+        * @param
+        * @return
+        */
+        virtual CGulIcon* GetFaviconL(const TDesC& aUrl) = 0;
+
+        /**
+        *
+        * @since 3.1
+        * @param
+        * @return
+        */
+        virtual void SendCommandsToClient(TBrCtlDefs::TBrCtlClientCommands aCommand,
+            const CArrayFix<TPtrC>& aAttributesNames,
+            const CArrayFix<TPtrC>& aAttributeValues) = 0;
+
+        /**
+        *
+        * @since 3.1
+        * @param
+        * @return
+        */
+        virtual void LoadUrlL( const TDesC& aUrl, TBrCtlDefs::TBrCtlCacheMode aCacheMode ) = 0;
+
+        /**
+        *
+        * @since 3.1
+        * @param
+        * @return
+        */
+        virtual HBufC* ResolveUrlL( const TDesC& aUrl) = 0;
+
+        /**
+        *
+        * @since 3.1
+        * @param
+        * @return
+        */
+        virtual void OpenPageViewL() = 0;
+        
+        
+        /**
+        *
+        * @since 3.2
+        * @param
+        * @return
+        */
+        virtual TUint GetBrowserSettingL(TUint aSetting) = 0;
+
+        /**
+        *
+        * @since 3.1
+        * @param
+        * @return
+        */
+        virtual void HandleHistoryCommandL(TBrCtlDefs::TBrCtlCommands aCommand) = 0;
+
+        /**
+        *
+        * @since 5.0
+        * @param
+        * @return
+        */
+        virtual void ViewImagesL() = 0;
+
+        /**
+        *
+        * @since 5.0
+        * @param
+        * @return
+        */
+        virtual TBool wmlMode() = 0;
+    };
+
+/**
+*  This is the toolbar class
+*  @since 3.1
+*/
+class CToolBar: public CBase, MEikMenuObserver
+    {
+    public:  // Constructors and destructor
+
+        /**
+        * Two-phased constructor.
+        */
+        IMPORT_C static CToolBar* NewL( MToolBarCallback& aToolBarCallBack );
+
+        /**
+        * Destructor.
+        */
+        virtual ~CToolBar();
+
+    public: //from MEikMenuObserver
+    
+        void ProcessCommandL(TInt aCommand);
+        void SetEmphasis(CCoeControl* /*aMenuControl*/,TBool /*aEmphasis*/);
+        void DynInitMenuPaneL( TInt /*aResourceId*/, CEikMenuPane* /*aMenuPane*/ );
+
+        
+    public: // New functions
+
+        /**
+        * Draw
+        * Draws the toolbar
+        * @since 3.1
+        * @param CWindowGc& aGc
+        * @return void
+        */
+      //  IMPORT_C void Draw( CWindowGc& aGc ) const;
+        IMPORT_C void Draw( ) const;
+
+        /**
+        * HandleOfferKeyEventL
+        * Handles key events
+        * @since 3.1
+        * @param aKeyEvent
+        * @param param
+        * @return if key response has been consumed or not
+        */
+        IMPORT_C TKeyResponse HandleOfferKeyEventL( const TKeyEvent& aKeyEvent, TEventCode param );
+
+        /**
+        * AnimateToolBarClosing
+        * Starts the tooltip timer
+        * @since 3.1
+        * @return void
+        */
+        IMPORT_C void AnimateToolBarClosing(TBool aActivateButton);
+
+        /**
+        * HandlePointerEventL
+        * Handles pointer events
+        * @since 3.1
+        * @param aPointerEvent
+        * @return void
+        */
+        IMPORT_C void HandlePointerEventL(const TPointerEvent& aPointerEvent);
+        
+        /**
+        * Draw
+        * Animates the toolbar position
+        * @since 3.1
+        * @return EFalse if animation is done or ETrue if animation is not complete
+        */
+        TBool ToolBarAnimation();
+
+        /**
+        * MakeToolTipVisible
+        * Makes the tooltip visible, tooltip is displayed after a delay
+        * This method is called by the tooltip timer
+        * Also called by the toolbar button drop down list to hide the tool tip
+        * @since 3.1
+        * @param aVisible show or hide tooltip - default is to show tooltip
+        * @return void
+        */
+        void MakeToolTipVisible(TBool aVisible = ETrue);
+
+        /**
+        * StartToolTipTimer
+        * Starts the tooltip timer
+        * @since 3.1
+        * @return void
+        */
+        void StartToolTipTimer();
+
+        /**
+        * Parent
+        *
+        * @since 3.1
+        * @return void
+        */
+        MToolBarCallback& ToolBarCallback() const { return *iToolBarCallback; }
+
+        /**
+        * Size
+        *
+        * @since 3.1
+        * @return void
+        */
+        TSize Size() const { return iToolBarSize; }
+
+        /**
+        * Position
+        *
+        * @since 3.1
+        * @return void
+        */
+        TPoint Position() const { return iPosition; }
+        
+        /**
+        * UpdateCursorPosition
+        * Updates the cursor position based on the focused index
+        * @since 3.1
+        */
+        void UpdateCursorPosition();
+        
+        /**
+        * Cursor Position
+        *
+        * @since 3.2
+        * @return void
+        */
+        TPoint CursorPosition() const { return iCursorPosition; }
+
+        /**
+        * HandleButtonActivation
+        * Handles navigation inside the toolbar
+        * @since 3.1
+        * @param ETrue if events was consumer EFalse if the event was not consumed
+        */
+        void HandleButtonActivation();
+
+        /**
+        * HandleButtonActivation
+        * Handles navigation inside the toolbar
+        * @since 3.1
+        * @param ETrue if events was consumer EFalse if the event was not consumed
+        */
+        void GetButtonImage( TInt aImageId, CFbsBitmap*& aImage ,CFbsBitmap*& aImageMask);
+
+        /**
+        * SelectableItemHighlighted
+        * cursor is highlighting something
+        * @since 3.2
+        * @param ETrue if highlighted element is selectable. default is true
+        */
+        void SelectableItemHighlighted( TBool aSelectable = ETrue );
+        
+        //Enums used to represent button commands
+        enum TToolBarButtonType
+            {
+            EToolBarNone,
+            EToolBarRecenUrls,
+            EToolBarMiniatureShow,
+            EToolBarReload,
+            EToolBarFindKeyword,
+            EToolBarGoToWebAddress,
+            EToolBarManageBookmarks,
+            EToolBarListBookmarks,
+            EToolBarSaveAsBookmark,
+            EToolBarSettings,
+            EToolBarPreviousPage,
+            EToolBarVisualHistory,
+            EToolBarGoToHompage,
+            EToolBarZoomIn,
+            EToolBarZoomOut,
+            EToolBarZoomMode,
+            EToolBarRotateScreen,
+            EToolBarViewImages,
+            EToolBarSavePage,
+            EToolBarSwitchWindow,
+            EToolBarSubscribeToFeeds,
+            EToolBarShowKeymap,
+            EToolBarShowHelp,
+            EToolBarFullScreen
+            };
+
+    protected:
+
+        /**
+        * Constructor
+        *
+        */
+        CToolBar(MToolBarCallback& aToolBarCallback);
+
+        /**
+        * Two-phase construction
+        */
+        void ConstructL();
+
+    private:
+         /**
+        * ConstructSprite
+        * Construct Sprite for toolbar bitmap
+        * @since 3.1
+        */
+         void ConstructSprite();
+         
+        /**
+        * HandleCursorMovement
+        * Handles navigation inside the toolbar
+        * @since 3.1
+        * @param lr = 1 Right lr = -1 Left tb = 1 Down tb = -1 Up
+        */
+        void HandleCursorMovement(TInt lr,TInt tb);
+
+        /**
+        * InitToolbarL
+        * Initializes the toolbar
+        * @since 3.1
+        */
+        void InitToolbarL();
+
+        /**
+        * DrawToolbarToBitmap
+        * Draws the empty toolbar to the bitmap
+        * @since 3.1
+        */
+        void DrawToolbarToBitmap();
+
+        /**
+        * DrawButtonsToBitmap
+        * Draws the buttons to the bitmap
+        * @since 3.1
+        */
+        void DrawButtonsToBitmap();
+
+        /**
+        * LoadSvg
+        * Draws the buttons to the bitmap
+        * @since 3.1
+        */
+        void LoadSvg( TInt aImageId, TAknsItemID aAknsId, const TDesC& aFileName, CFbsBitmap*& aImage, CFbsBitmap*& aImageMask );
+
+        /**
+        * GetCannedImageDirL
+        * Draws the buttons to the bitmap
+        * @since 3.1
+        */
+        HBufC* GetCannedImageDirL();
+
+        /**
+        * GetCannedImageDirL
+        * Draws the buttons to the bitmap
+        * @since 3.1
+        */
+        void LoadResourceFileL();
+
+        /**
+        * GetCannedImageDirL
+        * Draws the buttons to the bitmap
+        * @since 3.1
+        */
+        TBool CanActivateButton();
+        
+        /**
+        * ButtonOnPointerEvent(const TPointerEvent& aPointerEvent)
+        * Activates the Button on pointer events
+        * @since 3.1
+        * @return void
+        */
+        void ButtonOnPointerEvent(const TPointerEvent& aPointerEvent);
+        
+        void CreateCbaL();
+        void SetCba(TInt aResourceId);
+        
+    private:
+
+        //A pointer to the view
+        MToolBarCallback* iToolBarCallback;
+
+        //Tool bar bitmap
+        CFbsBitmap* iOffScreenBitmap;
+        CFbsBitmapDevice* iBitmapDevice;
+        CFbsBitGc* iBitmapGc;
+        
+        //Tool bar mask bitmap
+        CFbsBitmap* iMaskBitmap;
+        CFbsBitmapDevice* iMaskBitmapDevice;
+        CFbsBitGc* iMaskBitmapGc;
+
+        //Array of toolbar buttons
+        CArrayPtrFlat<CToolBarButton> *iButtonArray;
+
+        //Position and Size of toolbar
+        TSize iToolBarSize;
+        TPoint iPosition;
+        TPoint iCursorPosition;
+
+        //Current focussed button index
+        TInt iFocusedButtonIndex;
+        //Saved cursor position
+        TPoint iOrigCursorPos;
+
+        //Direction of toolbar animation
+        TInt iAnimDirX; // 1 From Left -1 From Right
+        TInt iAnimDirY; // 1 From top -1 from Bottom
+        
+        //AO for the toolbar animationm
+        CIdle *iAnimationTimer;
+
+        //Timer for showing the tooltip
+        CPeriodic* iToolTipTimer;
+
+        TBool iCanCloseToolBar;
+
+        TBool iActivateButton;
+
+        TKeyEvent iLastEventKey;
+
+        HBufC* iMbmFile;
+
+        HBufC* iSvgMbmFile;
+
+        TInt iResourceFile;
+        
+        RWsSprite iSprite;
+        
+        CEikButtonGroupContainer* iCba;
+        
+        //Button Configuration Array - stores which buttons are on by button index
+        CArrayFixFlat<TUint> *iButtonConfigArray;
+    };
+    
+// Toolbar button      translation matrix
+// 
+//  translates cenrep value to button tooltip string resource id 
+//  for each toolbar button
+//
+//  NOTE: THIS MUST STAY IN SYNC WITH SAME DEFINITION IN browserpreferences.h in UI.
+// 
+typedef const TInt TToolbarCommandDecodeEntry[2];
+
+#define KToolbarCommandDecodeMatrixCount  23
+#define KToolbarCommandDecodeMatrixCmdVal  0  // First entry is the Command Value
+#define KToolbarCommandDecodeMatrixStringId  1 // Second entry is the Setting String Id
+
+static const TToolbarCommandDecodeEntry    ToolbarCommandDecodeMatrix[] =
+{
+    // Index #               Value               Tooltip String Id
+    // = cenrep value
+       /* 0  */       { CToolBar::EToolBarNone,               0 /* N/A */                          },
+       /* 1  */       { CToolBar::EToolBarShowHelp,           R_BROWSER_TOOLTIP_SHOW_HELP          },
+       /* 2  */       { CToolBar::EToolBarSwitchWindow,       R_BROWSER_TOOLTIP_SWITCH_WINDOW      },
+       /* 3  */       { CToolBar::EToolBarSavePage,           R_BROWSER_TOOLTIP_SAVE_PAGE          },
+       /* 4  */       { CToolBar::EToolBarViewImages,         R_BROWSER_TOOLTIP_VIEW_IMAGES        },
+       /* 5  */       { CToolBar::EToolBarVisualHistory,      R_BROWSER_TOOLTIP_VISUAL_HISTORY     },
+       /* 6  */       { CToolBar::EToolBarManageBookmarks,    R_BROWSER_TOOLTIP_MANAGE_BOOKMARKS   },
+       /* 7  */       { CToolBar::EToolBarSubscribeToFeeds,   R_BROWSER_TOOLTIP_SUBSCRIBE_TO_FEEDS },
+       /* 8  */       { CToolBar::EToolBarRotateScreen,       R_BROWSER_TOOLTIP_ROTATE_SCREEN      },
+       /* 9  */       { CToolBar::EToolBarSettings,           R_BROWSER_TOOLTIP_SETTINGS           },
+       /* 10 */       { CToolBar::EToolBarZoomOut,            R_BROWSER_TOOLTIP_ZOOM_OUT           },
+       /* 11 */       { CToolBar::EToolBarZoomIn,             R_BROWSER_TOOLTIP_ZOOM_IN            },
+       /* 12 */       { CToolBar::EToolBarGoToHompage,        R_BROWSER_TOOLTIP_GO_TO_HOMPAGE      },
+       /* 13 */       { CToolBar::EToolBarPreviousPage,       R_BROWSER_TOOLTIP_PREVIOUS_PAGE      },
+       /* 14 */       { CToolBar::EToolBarMiniatureShow,      R_BROWSER_TOOLTIP_MINIATURE_SHOW     },
+       /* 15 */       { CToolBar::EToolBarReload,             R_BROWSER_TOOLTIP_RELOAD             },
+       /* 16 */       { CToolBar::EToolBarFindKeyword,        R_BROWSER_TOOLTIP_FIND_KEYWORD       },
+       /* 17 */       { CToolBar::EToolBarRecenUrls,          R_BROWSER_TOOLTIP_RECENT_URLS        }, 
+       /* 18 */       { CToolBar::EToolBarSaveAsBookmark,     R_BROWSER_TOOLTIP_SAVE_AS_BOOKMARK   },
+       /* 19 */       { CToolBar::EToolBarListBookmarks,      R_BROWSER_TOOLTIP_LIST_BOOKMARKS     }, 
+       /* 20 */       { CToolBar::EToolBarGoToWebAddress,     R_BROWSER_TOOLTIP_GO_TO_WEB_ADDRESS  },
+       /* 21 */       { CToolBar::EToolBarShowKeymap,         R_BROWSER_TOOLTIP_SHOW_KEYMAP        }, 
+       /* 22 */       { CToolBar::EToolBarFullScreen,         R_BROWSER_TOOLTIP_FULL_SCREEN        },                  
+};    
+
+#endif