uifw/EikStd/coctlinc/EIKSBEXT.H
changeset 0 2f259fa3e83a
child 4 8ca85d2f0db7
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/uifw/EikStd/coctlinc/EIKSBEXT.H	Tue Feb 02 01:00:49 2010 +0200
@@ -0,0 +1,224 @@
+/*
+* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of "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:
+*
+*/
+// EIKSBEXT.H
+//
+// This file contains extensions to classes declared in EIKSCRLB.H
+//
+		
+#if !defined(__EIKSBEXT_H__)
+#define __EIKSBEXT_H__
+
+#if !defined(__EIKBCTRL_H__)
+#include <eikbctrl.h>
+#endif
+
+#if !defined(__EIKSBOBS_H__)
+#include <eiksbobs.h>
+#endif
+
+#if !defined(__AKNSCBUT_H__)
+#include <aknscbut.h>
+#endif
+
+#include <lafpublc.h>
+
+#include "eiksbfrm.h"
+
+//
+// class CEikScrollBarExtensionImpl
+//
+// This class is a abstarct class of which derivied class contains most of the
+// logic of CEikScrollBar (and its derived classes). This class is declared as
+// "C"-type class instead of "M"-type class because of legacy destruction sequence
+// reasons.
+//
+class CEikScrollBarFrame;
+class CEikScrollBar;
+class MEikScrollBarObserver;
+class CAknInfoPopupNoteController;
+class CAknTouchAreaControl;
+
+class CEikScrollBarExtensionImpl : public CBase
+    {
+public:
+	virtual void SetLengthL(TInt aLength)=0;
+	virtual void SetModelL(const TEikScrollBarModel* aModel)=0;
+	virtual void SetModel(const TEikScrollBarModel* aModel)=0;
+	virtual void SetLengthAndModelL(TInt aLength,const TEikScrollBarModel* aModel)=0;
+	virtual void SetModelThumbPosition(TInt aThumbPos)=0;
+	virtual void SetFocusPosToThumbPos(TInt aFocusPosition)=0;
+	virtual TInt ThumbPosition() const=0;
+	virtual TInt ScrollBarBreadth() const=0;
+	virtual void SetDecreaseButtonsDimmed(TBool aDimmed)=0;
+	virtual void SetIncreaseButtonsDimmed(TBool aDimmed)=0;
+	virtual void SetAllButtonsDimmed(TBool aDimmed)=0;
+	virtual void SetContainingCba(CEikCba* aCba)=0;
+	virtual void CreateButtonL(CAknScrollButton*& aButton,CAknScrollButton::TType aType)=0;
+	virtual void DoSetModel(const TEikScrollBarModel* aModel)=0;
+	virtual CEikCba* Cba() const=0;
+	virtual void AddExternalFrameL(CEikScrollBarFrame* aFrame)=0;
+	virtual void RemoveExternalFrame(CEikScrollBarFrame* aFrame)=0;
+	virtual void DisconnectExternalFrames()=0;
+	virtual void CreateRequiredComponentsL()=0;
+	virtual void DestroyButton(CAknScrollButton*& aButton)=0;
+	virtual void SetButtonPositionL(CAknScrollButton* aButton)=0;
+	virtual TInt ScrollBarType()=0;
+	virtual void SetScrollBarObserver(MEikScrollBarObserver* aScrollBarObserver)=0;
+	virtual MEikScrollBarObserver* ScrollBarObserver()=0;
+	virtual TBool HasModelChanged(const TEikScrollBarModel* aModel) =0;
+private:
+    virtual TInt Reserved_1()=0;
+    virtual TInt Reserved_2()=0;
+    };
+
+//
+// class CEikScrollBarExtension
+//
+// This class is an extension class for CEikScrollBar class. 
+//
+NONSHARABLE_CLASS(CEikScrollBarExtension) : public CEikScrollBarExtensionImpl
+	{
+public:
+	CEikScrollBarExtension(CEikScrollBar* aParent);
+    ~CEikScrollBarExtension();
+	virtual void SetLengthL(TInt aLength);
+	virtual void SetModelL(const TEikScrollBarModel* aModel);
+	virtual void SetModel(const TEikScrollBarModel* aModel);
+	virtual void SetLengthAndModelL(TInt aLength,const TEikScrollBarModel* aModel);
+	virtual void SetModelThumbPosition(TInt aThumbPos);
+	virtual void SetFocusPosToThumbPos(TInt aFocusPosition);
+	virtual TInt ThumbPosition() const;
+	virtual TInt ScrollBarBreadth() const;
+	virtual void SetDecreaseButtonsDimmed(TBool aDimmed);
+	virtual void SetIncreaseButtonsDimmed(TBool aDimmed);
+	virtual void SetAllButtonsDimmed(TBool aDimmed);
+	virtual void SetContainingCba(CEikCba* aCba);
+	virtual void CreateButtonL(CAknScrollButton*& aButton,CAknScrollButton::TType aType);
+	virtual void DoSetModel(const TEikScrollBarModel* aModel);
+	virtual CEikCba* Cba() const;
+	virtual void AddExternalFrameL(CEikScrollBarFrame* aFrame);
+	virtual void RemoveExternalFrame(CEikScrollBarFrame* aFrame);
+	virtual void DisconnectExternalFrames();
+	virtual void CreateRequiredComponentsL();
+	virtual void DestroyButton(CAknScrollButton*& aButton);
+	virtual void SetButtonPositionL(CAknScrollButton* aButton);
+    virtual TInt ScrollBarType();
+    virtual void SetScrollBarObserver(MEikScrollBarObserver* aScrollBarObserver);
+	virtual MEikScrollBarObserver* ScrollBarObserver();
+	virtual TBool HasModelChanged(const TEikScrollBarModel* aModel);
+private:
+    virtual TInt Reserved_1();
+    virtual TInt Reserved_2();
+
+public: 
+	CEikCba* iCba;
+	CArrayFixFlat<CEikScrollBarFrame*> iExternalFrames;
+	
+	MEikScrollBarObserver* iScrollBarObserver;
+private:
+    CEikScrollBar* iParent;
+    TInt           iSpare1;
+    TInt           iSpare2;
+    TInt           iSpare3;
+	};
+
+//
+// class CAknDoubleSpanScrollBarExtension
+//
+// This class is an extension class for CAknDoubleSpanScrollBar class. 
+//
+NONSHARABLE_CLASS(CAknDoubleSpanScrollBarExtension) : public CEikScrollBarExtensionImpl
+    {
+public:
+    CAknDoubleSpanScrollBarExtension(CEikScrollBar* aParent);
+    ~CAknDoubleSpanScrollBarExtension();
+    virtual void SetLengthL(TInt aLength);
+    virtual void SetModelL(const TEikScrollBarModel* aModel);
+    virtual void SetModel(const TEikScrollBarModel* aModel);
+    virtual void SetLengthAndModelL(TInt aLength,const TEikScrollBarModel* aModel);
+    virtual void SetModelThumbPosition(TInt aThumbPos);
+    virtual void SetFocusPosToThumbPos(TInt aFocusPosition);
+    virtual TInt ThumbPosition() const;
+    virtual TInt ScrollBarBreadth() const;
+    virtual void SetDecreaseButtonsDimmed(TBool aDimmed);
+    virtual void SetIncreaseButtonsDimmed(TBool aDimmed);
+    virtual void SetAllButtonsDimmed(TBool aDimmed);
+    virtual void SetContainingCba(CEikCba* aCba);
+    virtual void CreateButtonL(CAknScrollButton*& aButton,CAknScrollButton::TType aType);
+    virtual void DoSetModel(const TEikScrollBarModel* aModel);
+    virtual CEikCba* Cba() const;
+    virtual void AddExternalFrameL(CEikScrollBarFrame* aFrame);
+    virtual void RemoveExternalFrame(CEikScrollBarFrame* aFrame);
+    virtual void DisconnectExternalFrames();
+    virtual void CreateRequiredComponentsL();
+    virtual void DestroyButton(CAknScrollButton*& aButton);
+    virtual void SetButtonPositionL(CAknScrollButton* aButton);
+    virtual TInt ScrollBarType();
+    virtual void SetScrollBarObserver(MEikScrollBarObserver* aScrollBarObserver);
+	virtual MEikScrollBarObserver* ScrollBarObserver();
+	virtual TBool HasModelChanged(const TEikScrollBarModel* aModel);
+	static TInt ScheduledDraw( TAny* aThis );
+	void DoScheduledDraw();
+private:
+    virtual TInt Reserved_1();
+    virtual TInt Reserved_2();
+public:
+    CAknDoubleSpanScrollIndicator* iScrollIndicator;
+	CArrayFixFlat<CEikScrollBarFrame*> iExternalFrames;
+    TRect iFixedLayoutRect;
+    
+    MEikScrollBarObserver* iScrollBarObserver;
+    TInt iPointerDownOn;
+    TInt iPointerDownPosition;
+    TInt iPointerOffsetFromThumb;
+    
+    CAknInfoPopupNoteController* iPopupController;
+    TBool iShowPopup;
+    MEikScrollBarObserver* iOwningScrollBarObserver;
+    CAknTouchAreaControl* iTouchAreaControl;
+    TInt iScrollBarFlags;
+    /** extension area type. */
+    TInt iExtensionType;
+    TBool iDragged;
+    TTime iLastDrag;
+private:
+    CEikScrollBar* iParent;
+    CIdle*         iActiveScheduledDraw;
+    TInt           iSpare2;
+    TInt           iSpare3;
+    TEikScrollBarModel iPreviousModel;
+    };
+
+//
+// class CEikScrollBarFrameExtension
+//
+// This class is an extension class for CEikScrollBarFrame class. 
+//    
+
+class CEikScrollBarFrameExtension
+	{
+public:
+    CEikScrollBarFrameExtension();
+    ~CEikScrollBarFrameExtension();
+
+public: 
+	CCoeControl* iParentWindow;
+    CEikScrollBarFrame::SBarData iH;
+    MEikScrollBarObserver* iScrollBarObserver;
+	};
+
+#endif