uifw/EikStd/coctlinc/EIKSBEXT.H
changeset 0 2f259fa3e83a
child 4 8ca85d2f0db7
equal deleted inserted replaced
-1:000000000000 0:2f259fa3e83a
       
     1 /*
       
     2 * Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
       
     3 * All rights reserved.
       
     4 * This component and the accompanying materials are made available
       
     5 * under the terms of "Eclipse Public License v1.0"
       
     6 * which accompanies this distribution, and is available
       
     7 * at the URL "http://www.eclipse.org/legal/epl-v10.html".
       
     8 *
       
     9 * Initial Contributors:
       
    10 * Nokia Corporation - initial contribution.
       
    11 *
       
    12 * Contributors:
       
    13 *
       
    14 * Description:
       
    15 *
       
    16 */
       
    17 // EIKSBEXT.H
       
    18 //
       
    19 // This file contains extensions to classes declared in EIKSCRLB.H
       
    20 //
       
    21 		
       
    22 #if !defined(__EIKSBEXT_H__)
       
    23 #define __EIKSBEXT_H__
       
    24 
       
    25 #if !defined(__EIKBCTRL_H__)
       
    26 #include <eikbctrl.h>
       
    27 #endif
       
    28 
       
    29 #if !defined(__EIKSBOBS_H__)
       
    30 #include <eiksbobs.h>
       
    31 #endif
       
    32 
       
    33 #if !defined(__AKNSCBUT_H__)
       
    34 #include <aknscbut.h>
       
    35 #endif
       
    36 
       
    37 #include <lafpublc.h>
       
    38 
       
    39 #include "eiksbfrm.h"
       
    40 
       
    41 //
       
    42 // class CEikScrollBarExtensionImpl
       
    43 //
       
    44 // This class is a abstarct class of which derivied class contains most of the
       
    45 // logic of CEikScrollBar (and its derived classes). This class is declared as
       
    46 // "C"-type class instead of "M"-type class because of legacy destruction sequence
       
    47 // reasons.
       
    48 //
       
    49 class CEikScrollBarFrame;
       
    50 class CEikScrollBar;
       
    51 class MEikScrollBarObserver;
       
    52 class CAknInfoPopupNoteController;
       
    53 class CAknTouchAreaControl;
       
    54 
       
    55 class CEikScrollBarExtensionImpl : public CBase
       
    56     {
       
    57 public:
       
    58 	virtual void SetLengthL(TInt aLength)=0;
       
    59 	virtual void SetModelL(const TEikScrollBarModel* aModel)=0;
       
    60 	virtual void SetModel(const TEikScrollBarModel* aModel)=0;
       
    61 	virtual void SetLengthAndModelL(TInt aLength,const TEikScrollBarModel* aModel)=0;
       
    62 	virtual void SetModelThumbPosition(TInt aThumbPos)=0;
       
    63 	virtual void SetFocusPosToThumbPos(TInt aFocusPosition)=0;
       
    64 	virtual TInt ThumbPosition() const=0;
       
    65 	virtual TInt ScrollBarBreadth() const=0;
       
    66 	virtual void SetDecreaseButtonsDimmed(TBool aDimmed)=0;
       
    67 	virtual void SetIncreaseButtonsDimmed(TBool aDimmed)=0;
       
    68 	virtual void SetAllButtonsDimmed(TBool aDimmed)=0;
       
    69 	virtual void SetContainingCba(CEikCba* aCba)=0;
       
    70 	virtual void CreateButtonL(CAknScrollButton*& aButton,CAknScrollButton::TType aType)=0;
       
    71 	virtual void DoSetModel(const TEikScrollBarModel* aModel)=0;
       
    72 	virtual CEikCba* Cba() const=0;
       
    73 	virtual void AddExternalFrameL(CEikScrollBarFrame* aFrame)=0;
       
    74 	virtual void RemoveExternalFrame(CEikScrollBarFrame* aFrame)=0;
       
    75 	virtual void DisconnectExternalFrames()=0;
       
    76 	virtual void CreateRequiredComponentsL()=0;
       
    77 	virtual void DestroyButton(CAknScrollButton*& aButton)=0;
       
    78 	virtual void SetButtonPositionL(CAknScrollButton* aButton)=0;
       
    79 	virtual TInt ScrollBarType()=0;
       
    80 	virtual void SetScrollBarObserver(MEikScrollBarObserver* aScrollBarObserver)=0;
       
    81 	virtual MEikScrollBarObserver* ScrollBarObserver()=0;
       
    82 	virtual TBool HasModelChanged(const TEikScrollBarModel* aModel) =0;
       
    83 private:
       
    84     virtual TInt Reserved_1()=0;
       
    85     virtual TInt Reserved_2()=0;
       
    86     };
       
    87 
       
    88 //
       
    89 // class CEikScrollBarExtension
       
    90 //
       
    91 // This class is an extension class for CEikScrollBar class. 
       
    92 //
       
    93 NONSHARABLE_CLASS(CEikScrollBarExtension) : public CEikScrollBarExtensionImpl
       
    94 	{
       
    95 public:
       
    96 	CEikScrollBarExtension(CEikScrollBar* aParent);
       
    97     ~CEikScrollBarExtension();
       
    98 	virtual void SetLengthL(TInt aLength);
       
    99 	virtual void SetModelL(const TEikScrollBarModel* aModel);
       
   100 	virtual void SetModel(const TEikScrollBarModel* aModel);
       
   101 	virtual void SetLengthAndModelL(TInt aLength,const TEikScrollBarModel* aModel);
       
   102 	virtual void SetModelThumbPosition(TInt aThumbPos);
       
   103 	virtual void SetFocusPosToThumbPos(TInt aFocusPosition);
       
   104 	virtual TInt ThumbPosition() const;
       
   105 	virtual TInt ScrollBarBreadth() const;
       
   106 	virtual void SetDecreaseButtonsDimmed(TBool aDimmed);
       
   107 	virtual void SetIncreaseButtonsDimmed(TBool aDimmed);
       
   108 	virtual void SetAllButtonsDimmed(TBool aDimmed);
       
   109 	virtual void SetContainingCba(CEikCba* aCba);
       
   110 	virtual void CreateButtonL(CAknScrollButton*& aButton,CAknScrollButton::TType aType);
       
   111 	virtual void DoSetModel(const TEikScrollBarModel* aModel);
       
   112 	virtual CEikCba* Cba() const;
       
   113 	virtual void AddExternalFrameL(CEikScrollBarFrame* aFrame);
       
   114 	virtual void RemoveExternalFrame(CEikScrollBarFrame* aFrame);
       
   115 	virtual void DisconnectExternalFrames();
       
   116 	virtual void CreateRequiredComponentsL();
       
   117 	virtual void DestroyButton(CAknScrollButton*& aButton);
       
   118 	virtual void SetButtonPositionL(CAknScrollButton* aButton);
       
   119     virtual TInt ScrollBarType();
       
   120     virtual void SetScrollBarObserver(MEikScrollBarObserver* aScrollBarObserver);
       
   121 	virtual MEikScrollBarObserver* ScrollBarObserver();
       
   122 	virtual TBool HasModelChanged(const TEikScrollBarModel* aModel);
       
   123 private:
       
   124     virtual TInt Reserved_1();
       
   125     virtual TInt Reserved_2();
       
   126 
       
   127 public: 
       
   128 	CEikCba* iCba;
       
   129 	CArrayFixFlat<CEikScrollBarFrame*> iExternalFrames;
       
   130 	
       
   131 	MEikScrollBarObserver* iScrollBarObserver;
       
   132 private:
       
   133     CEikScrollBar* iParent;
       
   134     TInt           iSpare1;
       
   135     TInt           iSpare2;
       
   136     TInt           iSpare3;
       
   137 	};
       
   138 
       
   139 //
       
   140 // class CAknDoubleSpanScrollBarExtension
       
   141 //
       
   142 // This class is an extension class for CAknDoubleSpanScrollBar class. 
       
   143 //
       
   144 NONSHARABLE_CLASS(CAknDoubleSpanScrollBarExtension) : public CEikScrollBarExtensionImpl
       
   145     {
       
   146 public:
       
   147     CAknDoubleSpanScrollBarExtension(CEikScrollBar* aParent);
       
   148     ~CAknDoubleSpanScrollBarExtension();
       
   149     virtual void SetLengthL(TInt aLength);
       
   150     virtual void SetModelL(const TEikScrollBarModel* aModel);
       
   151     virtual void SetModel(const TEikScrollBarModel* aModel);
       
   152     virtual void SetLengthAndModelL(TInt aLength,const TEikScrollBarModel* aModel);
       
   153     virtual void SetModelThumbPosition(TInt aThumbPos);
       
   154     virtual void SetFocusPosToThumbPos(TInt aFocusPosition);
       
   155     virtual TInt ThumbPosition() const;
       
   156     virtual TInt ScrollBarBreadth() const;
       
   157     virtual void SetDecreaseButtonsDimmed(TBool aDimmed);
       
   158     virtual void SetIncreaseButtonsDimmed(TBool aDimmed);
       
   159     virtual void SetAllButtonsDimmed(TBool aDimmed);
       
   160     virtual void SetContainingCba(CEikCba* aCba);
       
   161     virtual void CreateButtonL(CAknScrollButton*& aButton,CAknScrollButton::TType aType);
       
   162     virtual void DoSetModel(const TEikScrollBarModel* aModel);
       
   163     virtual CEikCba* Cba() const;
       
   164     virtual void AddExternalFrameL(CEikScrollBarFrame* aFrame);
       
   165     virtual void RemoveExternalFrame(CEikScrollBarFrame* aFrame);
       
   166     virtual void DisconnectExternalFrames();
       
   167     virtual void CreateRequiredComponentsL();
       
   168     virtual void DestroyButton(CAknScrollButton*& aButton);
       
   169     virtual void SetButtonPositionL(CAknScrollButton* aButton);
       
   170     virtual TInt ScrollBarType();
       
   171     virtual void SetScrollBarObserver(MEikScrollBarObserver* aScrollBarObserver);
       
   172 	virtual MEikScrollBarObserver* ScrollBarObserver();
       
   173 	virtual TBool HasModelChanged(const TEikScrollBarModel* aModel);
       
   174 	static TInt ScheduledDraw( TAny* aThis );
       
   175 	void DoScheduledDraw();
       
   176 private:
       
   177     virtual TInt Reserved_1();
       
   178     virtual TInt Reserved_2();
       
   179 public:
       
   180     CAknDoubleSpanScrollIndicator* iScrollIndicator;
       
   181 	CArrayFixFlat<CEikScrollBarFrame*> iExternalFrames;
       
   182     TRect iFixedLayoutRect;
       
   183     
       
   184     MEikScrollBarObserver* iScrollBarObserver;
       
   185     TInt iPointerDownOn;
       
   186     TInt iPointerDownPosition;
       
   187     TInt iPointerOffsetFromThumb;
       
   188     
       
   189     CAknInfoPopupNoteController* iPopupController;
       
   190     TBool iShowPopup;
       
   191     MEikScrollBarObserver* iOwningScrollBarObserver;
       
   192     CAknTouchAreaControl* iTouchAreaControl;
       
   193     TInt iScrollBarFlags;
       
   194     /** extension area type. */
       
   195     TInt iExtensionType;
       
   196     TBool iDragged;
       
   197     TTime iLastDrag;
       
   198 private:
       
   199     CEikScrollBar* iParent;
       
   200     CIdle*         iActiveScheduledDraw;
       
   201     TInt           iSpare2;
       
   202     TInt           iSpare3;
       
   203     TEikScrollBarModel iPreviousModel;
       
   204     };
       
   205 
       
   206 //
       
   207 // class CEikScrollBarFrameExtension
       
   208 //
       
   209 // This class is an extension class for CEikScrollBarFrame class. 
       
   210 //    
       
   211 
       
   212 class CEikScrollBarFrameExtension
       
   213 	{
       
   214 public:
       
   215     CEikScrollBarFrameExtension();
       
   216     ~CEikScrollBarFrameExtension();
       
   217 
       
   218 public: 
       
   219 	CCoeControl* iParentWindow;
       
   220     CEikScrollBarFrame::SBarData iH;
       
   221     MEikScrollBarObserver* iScrollBarObserver;
       
   222 	};
       
   223 
       
   224 #endif