diff -r 000000000000 -r dd21522fd290 webengine/webkitutils/ToolBar/ToolBarButton.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/webengine/webkitutils/ToolBar/ToolBarButton.h Mon Mar 30 12:54:55 2009 +0300 @@ -0,0 +1,693 @@ +/* +* 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 button class +* +*/ + +#ifndef __TOOLBARBUTTON +#define __TOOLBARBUTTON + +// INCLUDES +#include + +// CONSTANTS + +// MACROS + +// DATA TYPES + +// FUNCTION PROTOTYPES + +// FORWARD DECLARATIONS +class CWindowGc; +class CToolBar; +class CToolBarButton; +class CFbsBitmapDevice; +class CFbsBitGc; +class CFbsBitmap; +class CGulIcon; +class CDropDownButton; +class TBrCtlSubscribeTo; +class CRecentUrlStore; +class CIdle; + +// CLASS DECLARATION +/** +* CDropDownList +* +* @lib toolbar.dll +* @since 3.1 +*/ +class CDropDownList : public CBase + { + public: // Constructors and destructor + + /** + * Two-phased constructor. + * @since 3.1 + * @param + * @param + * @return CHttpCacheEntry object. + */ + static CDropDownList* NewL( CDropDownButton& aParent, CArrayPtrFlat* aItemText, + CArrayPtrFlat* aItemIcon = NULL ); + + /** + * Destructor. + */ + virtual ~CDropDownList(); + + public: // new functions + + /** + * + * @since 3.1 + * @param + * @return + */ + void MakeVisible( TBool aVisible ); + + /** + * + * @since 3.1 + * @param + * @return + */ + void SetFocus( TBool aFocusOn ); + + /** + * + * @since 3.1 + * @param + * @return + */ + TKeyResponse HandleOfferKeyEventL( const TKeyEvent& aKeyEvent, TEventCode aEventCode ); + + /** + * + * @since 3.1 + * @param + * @return + */ + TBool HandlePointerEventL( const TPointerEvent& aPointerEvent ); + + /** + * + * @since 3.1 + * @param + * @return + */ + // void Draw( CWindowGc& aGc ) ; + void Draw() ; + + /** + * + * @since 3.1 + * @param + * @return + */ + TInt SelectedItem() const { return iSelectedItem; } + + /** + * + * @since 3.1 + * @param + * @return + */ + const HBufC& SelectedItemText() const { return *iItemText->At( iSelectedItem ); } + + /** + * + * @since 3.1 + * @param + * @return + */ + void UpdateIconsL( CArrayPtrFlat* aItemIcon ); + private: + + /** + * Construct. + * @since 3.1 + * @param + * @param + * @return CDropDownList object. + */ + CDropDownList( CDropDownButton& aParent, CArrayPtrFlat* aItemText, + CArrayPtrFlat* aItemIcon = NULL ); + + /** + * By default Symbian 2nd phase constructor is private. + */ + void ConstructL(); + + /** + * + * @since 3.1 + * @param + * @return + */ + void AnimateDropDown(); + + /** + * + * @since 3.1 + * @param + * @return + */ + static TInt DropDownCb( TAny* aPtr ); + + /** + * + * @since 3.1 + * @param + * @return + */ + void DrawDropDownListL(); + + /** + * + * @since 3.1 + * @param + * @return + */ + TSize CalculateListSize(); + + /** + * + * @since 3.1 + * @param + * @return + */ + void CreateBitmapL(); + + /** + * + * @since 3.1 + * @param + * @return + */ + void ConstructSprite(); + + private: // Data + + CDropDownButton* iParent; // not owned + + CArrayPtrFlat* iItemText; // owned + CArrayPtrFlat* iItemIcon; // owned + + TBool iVisible; + + TInt iDropSlide; + + TPoint iPosition; + + TSize iSize; + + TInt iSelectedItem; + + TInt iOldSelectedItem; + + CPeriodic* iAnimTimer; + + CFbsBitmapDevice* iDropDownBitmapDevice; // owned + + CFbsBitGc* iDropDownBitmapContext; // owned + + CFbsBitmap* iDropDownBitmap; //owned + + CFbsBitmapDevice* iSpriteBitmapDevice; // owned + + CFbsBitGc* iSpriteBitmapContext; // owned + + CFbsBitmap* iSpriteBitmap; //owned + + CFbsBitmapDevice* iSpriteMaskBitmapDevice; // owned + + CFbsBitGc* iSpriteMaskBitmapContext; // owned + + CFbsBitmap* iSpriteMaskBitmap; //owned + + CFbsBitmapDevice* iMaskBitmapDevice; // owned + + CFbsBitGc* iMaskBitmapContext; // owned + + CFbsBitmap* iMaskBitmap; //owned + + RWsSprite iDropSprite; + + TBool iDropUp; + + TBool iSpriteInitialised; + }; + +/** +* This is the toolbar class +* @since 3.1 +*/ +class CToolBarButton : public CBase + { + public: + + /** + * Two-phased constructor. + */ + static CToolBarButton* NewL( CToolBar& aParent, TInt aIconIndex, const TDesC& aToolTip ); + + /** + * Destructor. + */ + virtual ~CToolBarButton(); + + /** + * SetPosition + * Sets the position of the toolbar button + * @since 3.1 + * @param TPoint &aPoint + * @return void + */ + void SetPosition( const TPoint& aPoint ) { iPosition = aPoint; } + + /** + * Position + * Gets the position of the toolbar button + * @since 3.1 + * @return TPoint + */ + TPoint Position() const { return iPosition; } + + /** + * Size + * Gets the size of the button + * @since 3.1 + * @return TPoint + */ + TSize Size() const { return iToolBarButton->SizeInPixels(); } + + /** + * Draw + * Refreshes the button + * @since 3.1 + * @return CWebKitToolTip + */ + CToolBar& ToolBar() const { return *iParent; }; + + /** + * ToolBarImage + * Gets the canned image for the button + * @since 3.1 + * @return CWebKitToolTip + */ + CFbsBitmap& ButtonImage() const { return *iToolBarButton; } + + /** + * ToolBarImage + * Gets the canned image for the button + * @since 3.1 + * @return CWebKitToolTip + */ + CFbsBitmap& ButtonMaskImage() const { return *iToolBarButtonMask; } + + /** + * HandleOfferKeyEventL + * Handles key events + * @since 3.1 + * @return CWebKitToolTip + */ + virtual TKeyResponse HandleOfferKeyEventL( const TKeyEvent& /*aKeyEvent*/, TEventCode /*aEventCode*/ ) + { return EKeyWasNotConsumed; } + + /** + * SetFocus + * Puts focus on the button + * @since 3.1 + * @return CWebKitToolTip + */ + virtual void SetFocus( TBool aFocusOn ); + + /** + * Draw + * Refreshes the button + * @since 3.1 + * @return CWebKitToolTip + */ + // virtual void Draw( CWindowGc& /*aGc*/ ) const {} + virtual void Draw() const {} + + /** + * ShowToolTip + * Method to enable tooltip visibility + * @since 3.1 + * @param aVisible show or hide tooltip - default is to show tool tip + * @return void + */ + virtual void ShowToolTip(TBool aVisible = ETrue); + + /** + * RefreshToolTip + * re-draws tool tip + * @since 3.1 + * @param + * @return + */ + virtual void RefreshToolTip(); + + /** + * HandlePointerEventL + * Handles pointer events + * @since 3.1 + * @return TBool + */ + virtual TBool HandlePointerEventL( const TPointerEvent& /*aPointerEvent*/ ){ return ETrue; } + + protected: + + /** + * Two-phased constructor. + */ + CToolBarButton( CToolBar& aParent ); + + /** + * Two-phased constructor. + */ + void BaseConstructL( TInt aButtonCmd, const TDesC& aToolTip ); + + protected: + //The canned image for this button + CFbsBitmap* iToolBarButton; + //The bitmap mask for this button + CFbsBitmap* iToolBarButtonMask; + //A pointer to the tooltip + HBufC* iToolTip; //owned + // pointer to the toolbar + CToolBar* iParent; // not owned + //Position of this button + TPoint iPosition; + + CFbsBitmapDevice* iToolTipBitmapDevice; // owned + + CFbsBitGc* iToolTipBitmapContext; // owned + + CFbsBitmap* iToolTipBitmap; //owned + + CFbsBitmapDevice* iToolTipMaskDevice; // owned + + CFbsBitGc* iToolTipMaskContext; // owned + + CFbsBitmap* iToolTipMask; //owned + + RWsSprite iToolTipSprite; + + TBool iToolTipSpriteVisible; + + TPoint iToolTipPos; + + }; + +/** +* CDropDownButton +* +* @lib webkit.dll +* @since 3.0 +*/ +class CDropDownButton: public CToolBarButton + { + public: // Constructors and destructor + + /** + * Destructor. + */ + virtual ~CDropDownButton(); + + /** + * + * @since 3.1 + * @param + * @return + */ + virtual TKeyResponse HandleOfferKeyEventL( const TKeyEvent& aKeyEvent, TEventCode aEventCode ); + + /** + * + * @since 3.1 + * @param + * @return + */ + virtual void SetFocus( TBool aFocusOn ); + + /** + * + * @since 3.1 + * @param + * @return + */ + // virtual void Draw( CWindowGc& aGc ) const; + virtual void Draw() const; + + /** + * + * @since 3.1 + * @param + * @return + */ + virtual void ActivatedL( TInt aSelectedItem ) = 0; + + /** + * HandlePointerEventL + * Handles pointer events + * @since 3.1 + * @return TBool + */ + virtual TBool HandlePointerEventL( const TPointerEvent& aPointerEvent ); + + /** + * ShowToolTip + * Method to enable tooltip visibility + * @since 3.1 + * @return CWebKitToolTip + */ + virtual void ShowToolTip(); + + protected: + + /** + * Construct. + * @since 3.1 + * @param + * @param + * @return CDropDownList object. + */ + CDropDownButton( CToolBar& aParent ); + + protected: + + CDropDownList* iDropDown; // owned + }; + +/** +* CBackButton +* +* @lib webkit.dll +* @since 3.0 +*/ +class CVisitedButton : public CDropDownButton + { + public: // Constructors and destructor + + /** + * Two-phased constructor. + * @since 3.1 + * @param + * @param + * @return CHttpCacheEntry object. + */ + static CVisitedButton* NewL( CToolBar& aParent, TInt aIconIndex, const TDesC& aToolTip ); + + /** + * Destructor. + */ + virtual ~CVisitedButton(); + + protected: + + /** + * Construct. + * @since 3.1 + * @param + * @param + * @return CDropDownList object. + */ + CVisitedButton( CToolBar& aParent ); + + /** + * By default Symbian 2nd phase constructor is private. + */ + void ConstructL( TInt aButtonCmd, const TDesC& aToolTip ); + /** + * + * @since 3.1 + * @param + * @return + */ + void ActivatedL( TInt aSelectedItem ); + /** + * + * @since 3.1 + * @param + * @return + */ + TBool ReadNextFaviconL(); + /** + * + * @since 3.1 + * @param + * @return + */ + static TBool ReadFaviconCb( TAny* aAny ); + private: + + CArrayPtrFlat* iVisitedUrls; // owned + // + CRecentUrlStore* iRecentUrlStore; //owned + // + TInt iCurrentFavicon; + // + CArrayPtrFlat* iListIcons; // owned + // + CIdle* iFaviTimer; // owned + }; + +/** +* +* +* @lib webkit.dll +* @since 3.0 +*/ +class CRssButton : public CDropDownButton + { + public: // Constructors and destructor + + /** + * Two-phased constructor. + * @since 3.1 + * @param + * @param + * @return CHttpCacheEntry object. + */ + static CRssButton* NewL( CToolBar& aParent, TInt aIconIndex, const TDesC& aToolTip, + const RPointerArray& aRssArray ); + + /** + * Destructor. + */ + virtual ~CRssButton(); + + protected: + + /** + * Construct. + * @since 3.1 + * @param + * @param + * @return object. + */ + CRssButton( CToolBar& aParent ); + + /** + * By default Symbian 2nd phase constructor is private. + */ + void ConstructL( TInt aButtonCmd, const TDesC& aToolTip, const RPointerArray& aRssArray ); + + /** + * + * @since 3.1 + * @param + * @return + */ + void ActivatedL( TInt aSelectedItem ); + + private: + + CArrayPtrFlat* iSubscribeToItemsUrls; // owned + }; + +/** +* CBookmarksButton +* +*/ +class CBookmarksButton : public CDropDownButton + { + public: // Constructors and destructor + + /** + * Two-phased constructor. + * @since 3.1 + * @param + * @param + * @return CHttpCacheEntry object. + */ + static CBookmarksButton* NewL( CToolBar& aParent, TInt aIconIndex, const TDesC& aToolTip ); + + /** + * Destructor. + */ + virtual ~CBookmarksButton(); + + protected: + + /** + * Construct. + * @since 3.1 + * @param + * @param + * @return CDropDownList object. + */ + CBookmarksButton( CToolBar& aParent ); + + /** + * By default Symbian 2nd phase constructor is private. + */ + void ConstructL( TInt aButtonCmd, const TDesC& aToolTip ); + /** + * + * @since 3.1 + * @param + * @return + */ + void ActivatedL( TInt aSelectedItem ); + /** + * + * @since 3.1 + * @param + * @return + */ + TBool ReadNextFaviconL(); + /** + * + * @since 3.1 + * @param + * @return + */ + static TBool ReadFaviconCb( TAny* aAny ); + private: + + CArrayPtrFlat* iBookmarkUrls; // owned + // + TInt iCurrentFavicon; + // + CArrayPtrFlat* iListIcons; // owned + // + CIdle* iFaviTimer; // owned + }; + +#endif