S60 3rd Edition API Reference: eiksbfrm.h Source File

eiksbfrm.h

Go to the documentation of this file.
00001 // EIKSBFRM.H
00002 //
00003 // Copyright (c) 1997-1999 Symbian Ltd.  All rights reserved.
00004 //
00005         
00006 #if !defined(__EIKSBFRM_H__)
00007 #define __EIKSBFRM_H__
00008 
00009 #include <lafpublc.h>
00010 #if !defined(__AKNSCRLB_H__)
00011 #include <aknscrlb.h>
00012 #endif
00013  
00014 class CEikCba;
00015 
00019 class TEikScrollBarFrameLayout
00020     {
00021 
00022 public:
00023 
00028     enum TTilingMode
00029         {
00030 
00032         EClientRectConstant,
00033 
00035         EInclusiveRectConstant
00036         };
00037 
00038 public:
00039 
00043     IMPORT_C TEikScrollBarFrameLayout();
00044 
00050     IMPORT_C void SetInclusiveMargin(TInt aMargin);
00051 
00058     IMPORT_C void SetClientMargin(TInt aMargin);
00059 
00060 public:
00061 
00063     TMargins iInclusiveMargin;
00064 
00069     TMargins iClientMargin;
00070 
00075     TSize iClientAreaGranularity;
00076 
00081     TTilingMode iTilingMode;
00082     };
00083 
00084 
00085 class CEikCornerWindow;
00086 class CEikScrollBarFrameExtension;
00087 
00099 class CEikScrollBarFrame : public CBase
00100     {
00101         
00102 public: // enums 
00103 
00104     DECLARE_TYPE_ID(0x101F8672)   
00105 
00106     
00107     enum TScrollBarVisibility
00108         {
00110         EOff,
00111 
00113         EOn,
00114 
00116         EAuto
00117         };
00118 
00120     enum TScrollBarType
00121         {
00123         ENormalScrollBar =0x0,
00124 
00126         EArrowHead =0x200,
00127 
00129         EDoubleSpan =0x400
00130         };
00131 
00133     enum TScrollBarSide
00134         {
00139         EBottomOrRight =0x0,
00140 
00145         ETopOrLeft =0x800
00146         };
00147                 
00149     enum TScrollBarManagement 
00150         {
00157         EComponent                  ,//=SLafScrollBarFrame::EComponent,
00158 
00167         EFloating                   ,//=SLafScrollBarFrame::EFloating,
00168 
00174         EApplicationScrollBar       //=SLafScrollBarFrame::EApplicationScrollBar
00175         };
00176 
00181     enum TScrollBarFrameFlags
00182         {
00184         EHVisible           =0x01,
00185 
00187         EVVisible           =0x02,
00188         };
00189 private:
00190     enum TMarginsAdjustmentMode
00191         {
00192         EGrow,
00193         EShrink
00194         };
00195 
00196 public: // specific
00197 
00201     CEikScrollBarFrame(){}
00202 
00210     IMPORT_C CEikScrollBarFrame(CCoeControl* aParentWindow, 
00211                                 MEikScrollBarObserver* aObserver, 
00212                                 TBool aPreAlloc=EFalse);
00213 
00217     IMPORT_C ~CEikScrollBarFrame();
00218 
00230     CEikScrollBarFrame(CCoeControl* aParentWindow, 
00231                        MEikScrollBarObserver* aObserver, 
00232                        TBool aPreAlloc, 
00233                        TBool aDoubleSpan);
00234 
00242     void InitExtension(CCoeControl* aParentWindow, 
00243                        MEikScrollBarObserver* aObserver);
00244 
00249     IMPORT_C void DrawScrollBarsNow() const;
00250 
00258     IMPORT_C void SetScrollBarVisibilityL(TScrollBarVisibility aHVisibility, 
00259                                           TScrollBarVisibility aVVisibility);
00260 
00269     inline TScrollBarVisibility VScrollBarVisibility() const;
00270 
00271 #start_since SINCE_3_1_SDK
00272 
00278     IMPORT_C void SetScrollBarFrameObserver(MEikScrollBarObserver* aObserver);
00279 #end_since SINCE_3_1_SDK
00280 
00281     // Model setting. 
00282 
00290     IMPORT_C TBool Tile(TEikScrollBarModel* aVModel);
00291 
00329     IMPORT_C TBool TileL(TEikScrollBarModel* aHModel, 
00330                          TEikScrollBarModel* aVModel,
00331                          TRect& aClientRect,
00332                          TRect& aInclusiveRect,
00333                          const TEikScrollBarFrameLayout& aLayout);
00334 
00345     IMPORT_C void MoveThumbsBy(TInt aDeltaX, TInt aDeltaY);
00346 
00355     IMPORT_C void MoveHorizThumbTo(TInt aHorizThumbPos);
00356 
00365     IMPORT_C void MoveVertThumbTo(TInt aVertThumbPos);
00366 
00375     IMPORT_C void SetVFocusPosToThumbPos(TInt aFocusPosition);
00376 
00386     IMPORT_C TInt ScrollBarBreadth(
00387         CEikScrollBar::TOrientation aOrientation) const;
00388 
00389     // scroll bar frame behavior functions
00390 
00396     IMPORT_C void SetAdjustsHorizontalModel(TBool aAdjusts); 
00397 
00403     IMPORT_C void SetAdjustsVerticalModel(TBool aAdjusts);
00404 
00410     inline void SetScrollBarFrameFlags(TInt aMask);
00411 
00418     IMPORT_C TBool ScrollBarExists(
00419         CEikScrollBar::TOrientation aOrientation) const;
00420 
00428     IMPORT_C TInt CountComponentControls() const;
00429 
00440     IMPORT_C CCoeControl* ComponentControl(TInt aIndex) const;
00441 
00451     IMPORT_C CEikScrollBar* GetScrollBarHandle(
00452         CEikScrollBar::TOrientation aOrientation) const;
00453 
00459     IMPORT_C CEikScrollBar* VerticalScrollBar() const;
00460 
00467     IMPORT_C void SetTypeOfHScrollBar(TScrollBarType aType);
00468 
00475     IMPORT_C void SetTypeOfVScrollBar(TScrollBarType aType);
00476 
00482     IMPORT_C TScrollBarType TypeOfHScrollBar() const;
00483 
00489     IMPORT_C TScrollBarType TypeOfVScrollBar() const;
00490 
00497     IMPORT_C TBool IsArrowHeadScrollBar(TInt aFlag) const;
00498 
00499     // application scroll bar utilities
00500 
00507     void DisconnectExternalScrollBar(CEikScrollBar* aScrollBar);
00508 
00549     IMPORT_C void CreateDoubleSpanScrollBarsL(TBool aWindowOwning, 
00550                                               TBool aRemote);
00551 
00572     IMPORT_C void CreateDoubleSpanScrollBarsL(TBool aWindowOwning, 
00573                                               TBool aRemote, 
00574                                               TBool aVertical, 
00575                                               TBool aHorizontal);
00576 
00596     IMPORT_C void Tile(TEikScrollBarModel* aVModel, TRect& aVScrollBar);
00597 
00606     IMPORT_C void Tile(TEikScrollBarModel* aHModel,
00607                        TEikScrollBarModel* aVModel);
00608 
00620     IMPORT_C TScrollBarVisibility ScrollBarVisibility(
00621             CEikScrollBar::TOrientation aOrientation) const;
00622 
00623 #start_since SINCE_3_1_SDK
00624 
00639         IMPORT_C TInt DrawBackground(TBool aDrawHorizontal, TBool aDrawVertical);
00640         
00656         IMPORT_C TInt DrawBackgroundState(TBool& aDrawHorizontal, TBool& aDrawVertical);
00657 #end_since SINCE_3_1_SDK
00658 
00659 public:
00660 
00666     CEikScrollBar* HorizontalScrollBar() const;
00667     
00668 
00669 protected:
00670     // Accessor methods
00671 
00677     void SetParentWindow(CCoeControl* aParentWindow);
00678 
00684     CCoeControl* ParentWindow() const;
00685 
00686 protected:
00687    
00689     struct SBarData
00690         {
00691 
00693         CAknScrollBar* iBar;
00694 
00696         TEikScrollBarModel iModel;
00697 
00699         TScrollBarVisibility iVisibility;
00700 
00702         TBool iExternalScrollBarAttached;
00703         };
00704 
00705 private:
00706 
00707     void CalcTheoreticalScrollBarVisibility(const TEikScrollBarModel* aVModel);
00708     void ApplyModel(SBarData& aSBar);
00709     void MakeSBarVisible(SBarData& aSBar, TBool aVisible);
00710     void GetScrollBars(TBool aDoubleSpan);
00711     CEikCba* GetCurrentCba();
00712     void DeleteScrollBars();
00713     void CreateArrowHeadScrollBarsL();
00714 
00715     void CalcTheoreticalScrollBarVisibility(const TEikScrollBarModel* aVModel,
00716                                             const TEikScrollBarModel* aHModel);
00717 
00718 protected:
00719 
00721     SBarData iV;
00722 
00723 private:
00724 
00725     CEikScrollBarFrameExtension* iExtension; 
00726     TInt iScrollBarFrameFlags;
00727 
00728     friend class CEikScrollBarFrameExtension;
00729     };
00730 
00731 inline CEikScrollBarFrame::TScrollBarVisibility CEikScrollBarFrame::VScrollBarVisibility() const
00732     { return iV.iVisibility; }
00733 inline void CEikScrollBarFrame::SetScrollBarFrameFlags(TInt aMask)
00734     { iScrollBarFrameFlags|=aMask; }
00735 
00736 // Cba scroll bar frame (with it's own scrollbar creation methods)
00737 class CEikCbaScrollBarFrame : public CEikScrollBarFrame
00738     {
00739 public:
00740     CEikCbaScrollBarFrame(CCoeControl* aParentWindow, MEikScrollBarObserver* aObserver, TBool aPreAlloc=EFalse);
00741     void ConstructL();
00742     void SwitchToArrowHeadScrollBarL();  // 
00743     };
00744 
00745 #endif

Copyright © Nokia Corporation 2001-2007
Back to top