webengine/wmlengine/src/Scrolling/inc/ScrollBarFrame.h
changeset 0 dd21522fd290
child 36 0ed94ceaa377
--- /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 <e32std.h>
+#include <coecntrl.h>
+
+// Browser as a Plugin includes
+#include <BrCtlInterface.h>
+
+//----------------------------------------------------------------------
+// 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