diff -r 000000000000 -r eb1f2e154e89 textinput/peninputcommonctrls/inc/peninputselectionlist/peninputscrollablelist.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/textinput/peninputcommonctrls/inc/peninputselectionlist/peninputscrollablelist.h Tue Feb 02 01:02:04 2010 +0200 @@ -0,0 +1,245 @@ +/* +* Copyright (c) 2008-2008 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: header file of button and dragbar +* +*/ + +#ifndef C_FEPLAYOUTSCROLLABLELIST_H +#define C_FEPLAYOUTSCROLLABLELIST_H + +#include +#include +#include +#include + +#define FORMATPAGEINFO(des, ktxt, parm...) {des.Format(ktxt, parm);}; + +class CAknFepCtrlCommonButton; + +class CFepLayoutScrollableList : public CFepLayoutChoiceList, public MEventObserver + { +public: + IMPORT_C static CFepLayoutScrollableList* NewL(CFepUiLayout* aUiLayout, + TInt aControlId, + TSize aItemSize, + TInt aHorizontalMargin, + TInt aVerticalMargin, + TSize aNaviSize, + TSize aNaviInnerSize); + + IMPORT_C static CFepLayoutScrollableList* NewLC(CFepUiLayout* aUiLayout, + TInt aControlId, + TSize aItemSize, + TInt aHorizontalMargin, + TInt aVerticalMargin, + TSize aNaviSize, + TSize aNaviInnerSize); + + IMPORT_C virtual ~CFepLayoutScrollableList(); + + IMPORT_C void ConstructFromResourceL(); + + IMPORT_C void SizeChanged(TSize aItemSize, + TInt aHorizontalMargin, + TInt aVerticalMargin, + TSize aNaviSize, + TSize aNaviInnerSize); + + IMPORT_C void SetTextProperty(const CFont* aFont, + TRgb aFontColor); + + IMPORT_C void SetImgFrId(TAknsItemID aBgFrId, + TAknsItemID aNaviFrId, + TAknsItemID aNaviActiveFrId, + TAknsItemID aNaviDimFrId, + TAknsItemID aItemFrId, + TAknsItemID aItemActiveFrId); + + inline void SetTextLineLayout(TAknTextLineLayout aTextLine); + + inline void SetPageInfoTextLineLayout(TAknTextLineLayout aTextLine); + inline void SetPageInfoFormatL(const TDesC& aFormat); + + // if current page include special item, the count also include + // special item + inline void SetOnePageItemCount(TInt aItemCount); + + inline void SetSpecialItemOn(TBool aOn); + + // get whole control width except item width + inline TInt CtrlWidthExceptItem(); + + // get whole control height + inline TInt CtrlHeight(); + + IMPORT_C void Draw(); + + IMPORT_C void ReCalcLayout(); + + IMPORT_C void UpdateNaviButtonStates(); + + IMPORT_C void SetListSeperationRect( const TRect& aRect ); + + inline void SetPageInfoResID( TInt aResID ); + + /** + * Hide or shoe control. A hiden control will not handle the event. + * + * @since S60 V4.0 + * @param aFlag ETrue if want to hide the control. + */ + IMPORT_C virtual void Hide(TBool aFlag); + +protected: + + IMPORT_C CFepLayoutScrollableList(CFepUiLayout* aUiLayout, + TInt aControlId, + TSize aItemSize, + TInt aHorizontalMargin, + TInt aVerticalMargin, + TSize aNaviSize, + TSize aNaviInnerSize); + + IMPORT_C void ConstructL(); + + IMPORT_C TInt HitTest(const TPoint& aPoint); + + IMPORT_C virtual void DrawItem(TInt aItemIndex, TBool aItemActive = EFalse); + + IMPORT_C virtual void CalculateItemWidth(); + + IMPORT_C virtual void DrawPageInfo(); + + + void ScrollPageUp(); + + void ScrollPageDown(); + + IMPORT_C void Move(const TPoint& aOffset); + +private: + void CalcPageInfo(); +protected: + //from MEventObserver + IMPORT_C void HandleControlEvent(TInt aEventType, CFepUiBaseCtrl* aCtrl, + const TDesC& aEventData); + + IMPORT_C void UpdatePageInfoL( TInt aCurrentPage, TInt aTotalPage ); + +#ifdef RD_TACTILE_FEEDBACK + // Update tactile feedback area when scroll page up and down. + void UpdateFeedbackArea(); +#endif // RD_TACTILE_FEEDBACK + +protected: + TPoint iTopLeftPoint; + TSize iItemSize; + TSize iNaviSize; + TSize iNaviInnerSize; + TInt iHorizontalMargin; + TInt iVerticalMargin; + TInt iBaselineOffset; + const CFont* iFont; + TRgb iFontColor; + TAknTextLineLayout iTextLine; + TBool iTextLineSet; + TAknTextLineLayout iPageInfoTextLine; + TBool iPageInfoLineSet; + + RPointerArray iBmpList; + + TAknsItemID iBgFrId; + // used for special item + TAknsItemID iItemFrId; + TAknsItemID iItemActiveFrId; + + TBool iSpecialItemOn; + TBool iNaviBtnShown; + + HBufC* iPageInfoFormat; + HBufC* iPageInfo; + TInt iCurrentPage; + TInt iTotalPages; + + //TPoint iTlPos; + TInt iOnePageItemCnt; + TRect iContentRect; + TRect iScrollRect; + TRect iPageUpRect; + TRect iPageDownRect; + TRect iPageInfoRect; + RArray iItemRects; + CAknFepCtrlCommonButton* iPageUp; + CAknFepCtrlCommonButton* iPageDown; + + // List speration + TRect iSeperationRect; + CFbsBitmap* iSeperationBmp; //own + CFbsBitmap* iSeperationMaskBmp; // own + + // Res ID of page info + TInt iPageInfoResID; + + TRect iLastPageItemRect; + TInt iInitItemWidth; + }; + +inline void CFepLayoutScrollableList::SetTextLineLayout(TAknTextLineLayout aTextLine) + { + iTextLine = aTextLine; + iTextLineSet = ETrue; + } +inline void CFepLayoutScrollableList::SetPageInfoTextLineLayout(TAknTextLineLayout aTextLine) + { + iPageInfoTextLine = aTextLine; + iPageInfoLineSet = ETrue; + } + +inline void CFepLayoutScrollableList::SetPageInfoFormatL(const TDesC& aFormat) + { + delete iPageInfoFormat; + iPageInfoFormat = NULL; + iPageInfoFormat = aFormat.AllocL(); + + // on the assumption that page info do not beyond 100 + delete iPageInfo; + iPageInfo = NULL; + iPageInfo = HBufC::NewL(aFormat.Length() + 6); + } + +inline void CFepLayoutScrollableList::SetOnePageItemCount(TInt aItemCount) + { + iOnePageItemCnt = aItemCount; + } + +inline void CFepLayoutScrollableList::SetSpecialItemOn(TBool aOn) + { + iSpecialItemOn = aOn; + } + +inline TInt CFepLayoutScrollableList::CtrlWidthExceptItem() + { + return 4*iHorizontalMargin + iNaviSize.iWidth; + } + +inline TInt CFepLayoutScrollableList::CtrlHeight() + { + return (iOnePageItemCnt + 1)*iVerticalMargin + iOnePageItemCnt*iItemSize.iHeight; + } + +inline void CFepLayoutScrollableList::SetPageInfoResID( TInt aResID ) + { + iPageInfoResID = aResID; + } +#endif //C_FEPLAYOUTSCROLLABLELIST_H