diff -r 000000000000 -r eb1f2e154e89 textinput/peninputarc/inc/peninputlayoutcontrolinc/peninputlayoutchoicelist.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/textinput/peninputarc/inc/peninputlayoutcontrolinc/peninputlayoutchoicelist.h Tue Feb 02 01:02:04 2010 +0200 @@ -0,0 +1,510 @@ +/* +* Copyright (c) 2005-2006 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 choice list window +* +*/ + +#ifndef C_FEPLAYOUTCHOICELIST_H +#define C_FEPLAYOUTCHOICELIST_H + +#include +#include "peninputlayoutpopupwnd.h" + +/** + * The constant for max text length of + * choice list item title. + */ +const TInt KMaxItemTextLength = 100; + +/** + * class CFepLayoutChoiceList + * + * Popup choick list control. This class could be used directly by user. + * + * @lib feplayoutcontrol.lib + * @since S60 V4.0 + */ +class CFepLayoutChoiceList : public CFepLayoutPopupWnd + { +public: + enum TListHitPosition + { + EListInsideNoneListItem = -2, + EListOutside = -1, + EListItemFirst = 0 + }; + /** + * struct SEvent + * Event data structure reported by choice list control + * + */ + struct SEvent + { + /* + * selected item index, -1 if user cancel + * popup list by click outside popup list + */ + TInt iIndex; + /* + * selected item command + */ + TInt iCommand; + }; + + /** + * struct SItem + * Choice list item data structure. + * + */ + struct SItem + { + /* + * Command of choice list item. + */ + TInt iCommand; + + /* + * Title of choice list item. + */ + TBuf iText; + }; + +public: + /** + * Factory function. + * + * @since S60 V4.0 + * @param aUiLayout Ui layout who contains this control.Ownership not transferred + * @param aControlId control Id + * @return An instance of CFepLayoutChoiceList class + */ + IMPORT_C static CFepLayoutChoiceList* NewL(CFepUiLayout* aUiLayout, + TInt aControlId); + + + /** + * Destructor. + * + * @since S60 V4.0 + */ + IMPORT_C ~CFepLayoutChoiceList(); + + /** + * Set choice list item rectangle. + * + * @since S60 V4.0 + * @param aItemRect Single item rect, top left should be (0,0) + * @param aFocusRect Focused rect, the coordinate is in aItemRect. + * @return None + */ + IMPORT_C void SetItemRect(const TRect& aItemRect, const TRect& aFocusRect); + + /** + * Set choice list item text display position, relative to + * iItemRect. + * + * @since S60 V4.0 + * @param aMargin Offset to add to the position as calculated + using specified rectangle + * @param aBaseLine An offset in pixels for the baseline from + the normal position. + * @return None + */ + inline void SetMarginAndBaseline(TInt16 aMargin, TInt16 aBaseLine); + + /** + * Set choice list item text display font. + * + * @since S60 V4.0 + * @param aFont Font used to display text. Ownership not transferred. + */ + inline void SetFont(const CFont* aFont); + + + /** + * Set choice list item text display color. + * + * @since S60 V4.0 + * @param aCol Font color. + * @return None + */ + inline void SetFontColor(const TRgb& aCol); + + /** + * Set bitmap for focus. + * + * @since S60 V4.0 + * @param aItemFocusBmp The bitmap. Ownership transferred to choice list. + * @return None + */ + IMPORT_C void SetFocusBmp(CFbsBitmap* aItemFocusBmp); + + /** + * Set mask bitmap for focus. + * + * @since S60 V4.0 + * @param aItemFocusBmpMask The bitmap. Ownership transferred to choice list. + * @return None + */ + IMPORT_C void SetFocusBmpMask(CFbsBitmap *aItemFocusBmpMask); + + /** + * Get bitmap for focus . + * + * @since S60 V4.0 + * @return The bitmap + */ + inline const CFbsBitmap* FocusBmp(); + + /** + * Set mask bitmap for focus . + * + * @since S60 V4.0 + * @return The bitmap + */ + inline const CFbsBitmap* FocusBmpMask(); + + inline const RPointerArray& ItemArray(); + + /** + * Set choice list items. + * + * @since S60 V4.0 + * @param aItemList Item list array. The function copies them internally. + * @return None + */ + IMPORT_C void SetItemsL(const RPointerArray& aItemList); + + /** + * Append a choice list item. + * + * @since S60 V4.0 + * @param aItem Item to add. + * @return None + */ + IMPORT_C void AddItemL(const CFepLayoutChoiceList::SItem& aItem); + + /** + * Insert a choice list item at specified postion. + * + * @since S60 V4.0 + * @param aPostion The position is to be inserted. + * @param aItem Item to insert. + * @return None + */ + IMPORT_C void InsertItemL(TInt aPostion, const CFepLayoutChoiceList::SItem& aItem); + + /** + * Remove a choice list item by command + * Only the first found item is removed. + * + * @since S60 V4.0 + * @param aCommand Item command. + * @return None + */ + IMPORT_C void RemoveItemByCommand(TInt aCommand); + + /** + * Remove a choice list item by index + * + * @since S60 V4.0 + * @param aIndex Item index + * @return None + */ + IMPORT_C void RemoveItemByIndex(TInt aIndex); + + /** + * Clear all choice list items + * + * @since S60 V4.0 + * @return None + */ + IMPORT_C void ClearItemsL(); + + /** + * Clear all choice list items + * + * @since S60 V4.0 + * @return None + */ + IMPORT_C TInt ItemsCount(); + + /** + * Retrieve a choice list item by index + * + * @since S60 V4.0 + * @param aIndex Item index + * @return choice list item pointer of specified index + */ + const CFepLayoutChoiceList::SItem* ItemByIndex(TInt aIndex); + + /** + * Retrieve a choice list item by item's command + * Only first found item is returned. + * + * @since S60 V4.0 + * @param aCommand Item command + * @return choice list item pointer. NULL if not found. + */ + const CFepLayoutChoiceList::SItem* ItemByCommand(TInt aCommand); + + /** + * Report event to observer + * + * @since S60 V4.0 + * @param aEvent Event to report + * @return None. + */ + IMPORT_C void ReportChoiceEvent(CFepLayoutChoiceList::SEvent& aEvent); + + + //inline CEikListBox* ListBox(); + /** + * Find the position for given command + /** + * Get item whose region contains the point. + * + * @since S60 V5.0 + * @param aCmd The command to be found + * @return The index of choice item. -1 if no item contains + * the command + */ + IMPORT_C TInt FindCommand(TInt aCmd); + + /** + * Set skin ID of subitem and background + * + * @since S60 V4.0 + * @param aSubItemID Skin ID of sub item + * @param aBackgroundID Skin ID of background + * @return None. + */ + IMPORT_C void SetSkinID( TAknsItemID aSubItemID, TAknsItemID aBackgroundID ); + + /** + * Get current selected item index + * + * @since S60 V4.0 + * @return index. + */ + IMPORT_C TInt CurrentFocusedIndex( ) const; + + /** + * Set current selected item index + * + * @since S60 V4.0 + * @param aIndex selected item index + * @return None. + */ + IMPORT_C void SetCurrentFocusedIndex(const TInt aIndex); + +protected: + + /** + * Constructor. + * + * @since S60 V4.0 + * @param aUiLayout Ui layout who contains this control.Ownership not transferred + * @param aControlId control Id + */ + IMPORT_C CFepLayoutChoiceList(CFepUiLayout* aUiLayout, + TInt aControlId); + + /** + * Get item whose region contains the point. + * + * @since S60 V4.0 + * @param aPoint The point position the layout + * @return The index of choice item. -1 if no item contains + * the point + */ + IMPORT_C virtual TInt HitTest(const TPoint& aPoint); + + /** + * Handle pointer down event + * + * @since S60 V4.0 + * @param aPoint The point position relative the layout + * @return The control which handles the event. + */ + IMPORT_C virtual CFepUiBaseCtrl* HandlePointerDownEventL(const TPoint& aPoint); + + /** + * Handle pointer move event + * + * @since S60 V4.0 + * @param aPoint The point position relative the layout + * @return The control which handles the event. + */ + IMPORT_C virtual CFepUiBaseCtrl* HandlePointerMoveEventL(const TPoint& aPoint); + + /** + * Handle pointer up event + * + * @since S60 V4.0 + * @param aPoint The point position relative the layout + * @return The control which handles the event. + */ + IMPORT_C virtual CFepUiBaseCtrl* HandlePointerUpEventL(const TPoint& aPoint); + + IMPORT_C void AfterDisplayed(); +private: + /** + * Draw a choice list item by index. + * + * @since S60 V4.0 + * @param aIndex The index of item to draw. + * @param aErase ETrue, draw background + EFalse, don't draw background + * @return None. + */ + void DrawItem(TInt aIndex, TBool aErase); + + /** + * Draw a choice list item. + * + * @since S60 V4.0 + * @param aRect The position of the item. + * @param aItem The item to draw. + * @param aFocus Whether the item is focused or not + * @param aErase ETrue, draw background + EFalse, don't draw background + * @return None. + */ + void DrawItem(const TRect& aRect, const CFepLayoutChoiceList::SItem& aItem, + TBool aErase, TBool aFocus); + + /** + * Draw choice list background + * + * @since S60 V4.0 + * @param aRect The area to draw + * @param aDrawBorder ETrue, draw border + EFalse, don't draw border + * @return None. + */ + void DrawChoiceListBackground(const TRect& aRect);//, TBool aDrawBorder = ETrue); + + /** + * Draw bitmap helper function + * + * @since S60 V4.0 + * @param aDestRect The destination rect to draw + * @param aSrcRect The source rect of bitmap + * @param aFast ETrue, use Bitblt to draw bitmap + EFalse, use DrawBitmap to draw + * @return None. + */ + void DrawBitmap(const TRect& aDestRect, const TRect& aSrcRect, CFbsBitmap* aBmp, TBool aFast); + + + /** + * Choice list draw function + * + * @since S60 V4.0 + * @return None. + */ + IMPORT_C virtual void Draw(); + + /** + * Prepare display. + * + * @since S60 V4.0 + * @return None. + */ + IMPORT_C void OnDisplay(); + + /** + * Calculate rect based on item count. + * + * @since S60 V4.0 + * @return None. + */ + IMPORT_C virtual void ReCalcLayout(); + + static TInt FreezeCallBack( TAny *aPtr ); + + void AfterDisplayedL(); + +protected: + /** + * Single item rect + */ + TRect iItemRect; + + /** + * Focus item rect + */ + TRect iItemFocusRect; + + /** + * Draw text left side margin + */ + TInt16 iMargin; + + /** + * Draw text baseline + */ + TInt16 iBaseline; + + /** + * Current selecting item + */ + TInt iCurFocusItem; + + /** + * Focus bitmap. + */ + CFbsBitmap* iItemFocusBmp; + + /** + * Focus mask bitmap. + */ + CFbsBitmap* iItemFocusBmpMask; + + /** + * Choice list items array. + */ + RPointerArray iItemList; + + /** + * Item text display font. Not Own. + */ + const CFont* iFont; + + /** + * Item text display color. + */ + TRgb iFontColor; + + /** + * Update editor cursor timer + */ + CPeriodic* iFreezeTimer; + + /** + * The last selected item index + */ + TInt iLastSelIndex; + + /** + * The skin ID of sub item and background + */ + TAknsItemID iSubItemSkinID; + TAknsItemID iBackgroundSkinID; + }; + +#include "peninputlayoutchoicelist.inl" +#endif //C_FEPLAYOUTCHOICELIST_H +//End Of File