diff -r 000000000000 -r dd21522fd290 webengine/wmlengine/src/Scrolling/inc/ScrollBarFrame.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/webengine/wmlengine/src/Scrolling/inc/ScrollBarFrame.h Mon Mar 30 12:54:55 2009 +0300 @@ -0,0 +1,267 @@ +/* +* Copyright (c) 2002-2004 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: Definition of the Browser On-screen scrollbar frame +* and browser scrollbar corner window +* +*/ + +#ifndef SCROLLBARFRAME_H +#define SCROLLBARFRAME_H + +//---------------------------------------------------------------------- +// INCLUDES +//---------------------------------------------------------------------- +#include "ScrollBar.h" +#include +#include + +// Browser as a Plugin includes +#include + +//---------------------------------------------------------------------- +// CONSTANTS +//---------------------------------------------------------------------- +const TInt KBrowserVScrollBarWidth = 6; // V Scrollbar Width +const TInt KBrowserHScrollBarHeight = 6; // H Scrollbar Height + +const TInt KBrowserVScrollBarMaxLen = 204; // The maximum height of the vertical scrollbar + +const TInt KBrowserMaxDisplayWidth = 176; // Display Width +const TInt KConvertToNegativeValue = -1; // used to convert numbers to negative + +//---------------------------------------------------------------------- +// FORWARD DECLARATIONS +//---------------------------------------------------------------------- +class CScrollBar; + +//---------------------------------------------------------------------- +// CLASS DEFINITION - only used in CScrollBarFrame +//---------------------------------------------------------------------- +/** +* Browser scrollbar corner window +* +* @since Series60_version 2.5 +*/ +class CScrollBarCornerWindow : public CCoeControl + { + //------------------------------------------------------------------ + // Constructors and Destructors + //------------------------------------------------------------------ + public: + static CScrollBarCornerWindow* NewL(const CCoeControl& aParent); + virtual ~CScrollBarCornerWindow(); + + // Inherited Functions + void Draw(const TRect& aRect) const; + private: + void ConstructL(const CCoeControl& aParent); + + }; + + +//---------------------------------------------------------------------- +// CLASS DEFINITION +//---------------------------------------------------------------------- +/** +* Browser scrollbar frame +* @since Series60_version 2.5 +*/ +class CScrollBarFrame : public CBase + { + //------------------------------------------------------------------ + // Constructors and Destructors - Public + //------------------------------------------------------------------ + public: + + /** + * Two-phased constructor. + */ + static CScrollBarFrame* NewL(const CCoeControl& aParent); + + /** + * Destructor. + */ + virtual ~CScrollBarFrame(); + + //------------------------------------------------------------------ + // Member Functions - Get/Set Funtions - Public + //------------------------------------------------------------------ + public: + + /** + * Sets the layout indicator + * @since Series60_version 2.5 + * @param aLayout - webpage layout + * @return none + */ + inline void SetLayout(const TBrCtlLayout aLayout) { iLayout = aLayout; } + /** + * Returns the layout indicator value + * @since Series60_version 2.5 + * @return MBrCtlLayoutObserver::TBrCtlLayout - layout of the webpage + */ + inline const TBrCtlLayout Layout() { return iLayout; } + + /** + * Returns the vertical scrollbar + * @since Series60_version 2.8 + * @return MBrCtlLayoutObserver::TBrCtlLayout - layout of the webpage + */ + inline const CScrollBar* VScrollBar() {return iVScrollBar;} + + /** + * Returns the horizontal scrollbar + * @since Series60_version 2.8 + * @return MBrCtlLayoutObserver::TBrCtlLayout - layout of the webpage + */ + inline const CScrollBar* HScrollBar() {return iHScrollBar;} + + /** + * Sets the display height + * @since Series60_version 2.5 + * @param aHeight - display height + * @return none + */ + void SetDisplayHeight(const TInt aHeight); + + /** + * Sets the display width + * @since Series60_version 2.5 + * @param aWidth - display width + * @return none + */ + void SetDisplayWidth(const TInt aWidth); + + /** + * Gets the display rect + * @since Series60_version 2.5 + * @return TRect& - the display rectangle + */ + const TRect& Display() const { return iDisplay; } + + //------------------------------------------------------------------ + // Member Functions - Public + //------------------------------------------------------------------ + public: + + /** + * Updates the vertical scrollbar + * @since Series60_version 2.5 + * @return none + */ + void UpdateVScrollBarL(); + + /** + * Updates the Horizontal scrollbar + * @since Series60_version 2.5 + * @return none + */ + void UpdateHScrollBarL(); + + /** + * Sets indicator relating to the webpage layout + * @since Series60_version 2.5 + * @param aLayout - the layout of the webpage + * @return none + */ + void NotifyLayoutChange(TBrCtlLayout aLayout); + + /** + * Determines whether a vertical scroll bar will be required + * and the space required for the scrollbar + * @since Series60_version 2.5 + * @param aDocument - height of the webpage + * @param aDisplay - height of the display + * @param aDisplayPos - vertical position of display in webpage + * @return none + */ + TInt VScrollBarNeeded(TInt aDocument, TInt aDisplay, TInt aDisplayPos); + + /** + * Determines whether a horizontal scroll bar will be required + * and the space required for the scrollbar + * @since Series60_version 2.5 + * @param aDocument - width of the webpage + * @param aDisplay - width of the display + * @param aDisplayPos - horizontal position of display in webpage + * @param aDisplayHeight - vertical position of display in webpage + * @return none + */ + TInt HScrollBarNeeded(TInt aDocument, TInt aDisplay, TInt aDisplayPos, + TInt aDisplayHeight); + + inline TInt VScrollBarWidth() { return KBrowserVScrollBarWidth; } + + //------------------------------------------------------------------ + // Constructors and Destructors - Private + //------------------------------------------------------------------ + private: + + /** + * C++ default constructor. + */ + CScrollBarFrame(); + + /** + * Symbian 2nd phase constructor + */ + void ConstructL( const CCoeControl& aParent ); + + //------------------------------------------------------------------ + // Member Functions - Private + //------------------------------------------------------------------ + private: + + /** + * Calculates dimensions of the scroll bar and forwards to scrollbar + * @since Series60_version 2.5 + * @param aOrientation - scrollbar orientation + * @return none + */ + void SetScrollBar(const CScrollBar::TOrientation aOrientation); + + /** + * Calculates dimensions of the thumb and forwards to scrollbar thumb + * @since Series60_version 2.5 + * @param aOrientation - scrollbar orientation + * @return none + */ + void SetThumb(CScrollBar::TOrientation aOrientation); + + //------------------------------------------------------------------ + // Member Data - Public + //------------------------------------------------------------------ + public: + + // Scrollbars + CScrollBar* iVScrollBar; // owned + CScrollBar* iHScrollBar; // owned + + // Corner Window - only used with a scrollbar pair + CScrollBarCornerWindow* iCornerWindow; // owned + + //------------------------------------------------------------------ + // Member Data - Private + //------------------------------------------------------------------ + private: + + TRect iDocument; // web page + TRect iDisplay; // display + TPoint iDisplayPos; // position of display within web page + + TRect iScrollBarRect; // TRect outside iDisplay where scrollbars are drawn + TBrCtlLayout iLayout; // is scrolling left to right OR right to left +}; + +#endif // SCROLLBARFRAME_H