diff -r 000000000000 -r eb1f2e154e89 textinput/peninputarc/inc/peninputlayoutcontrolinc/peninputlayoutaknchoicelist.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/textinput/peninputarc/inc/peninputlayoutcontrolinc/peninputlayoutaknchoicelist.h Tue Feb 02 01:02:04 2010 +0200 @@ -0,0 +1,308 @@ +/* +* 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 for avkon version +* +*/ + +#ifndef C_AKN_FEPLAYOUTCHOICELIST_H +#define C_AKN_FEPLAYOUTCHOICELIST_H + +#include "peninputlayoutchoicelist.h" +#include +#include +class CAknSingleStyleListBox; +class CAknsFrameBackgroundControlContext; + +/** + * class CFepLayoutAknChoiceList + * + * Popup choick list control. This class could be used directly by user. + * + * @lib feplayoutcontrol.lib + * @since S60 V4.0 + */ +class CFepLayoutAknChoiceList : public CFepLayoutChoiceList + { +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 CFepLayoutAknChoiceList* NewL(CFepUiLayout* aUiLayout, + TInt aControlId,CCoeControl* aParent); + + //IMPORT_C static CFepLayoutAknChoiceList* NewL(CFepUiLayout* aUiLayout, + // TInt aControlId,CAknChoiceListPopup* aList); + + /** + * Destructor. + * + * @since S60 V4.0 + */ + //IMPORT_C ~CFepLayoutAknChoiceList(); + + + /** + * 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); + + IMPORT_C CEikColumnListBox* ListBox(); + + IMPORT_C CEikFormattedCellListBox* FormatedCellListBox(); + + + IMPORT_C void SetItemRect(const TRect& aItemRect, const TRect& aFocusRect); + + //from CFepUiBaseCtrl + IMPORT_C void SetRect(const TRect& aRect); + + IMPORT_C ~CFepLayoutAknChoiceList(); +protected: + + /** + * Constructor. + * + * @since S60 V4.0 + * @param aUiLayout Ui layout who contains this control.Ownership not transferred + * @param aControlId control Id + */ + IMPORT_C CFepLayoutAknChoiceList(CFepUiLayout* aUiLayout, + TInt aControlId,CCoeControl* aParent); + + IMPORT_C void ConstructL(); + /** + * 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 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); + +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); + + /** + * Report event to observer + * + * @since S60 V4.0 + * @param aEvent Event to report + * @return None. + */ + // void ReportChoiceEvent(CFepLayoutChoiceList::SEvent& aEvent); + + /** + * Choice list draw function + * + * @since S60 V4.0 + * @return None. + */ + IMPORT_C void Draw(); + + /** + * Prepare display. + * + * @since S60 V4.0 + * @return None. + */ + IMPORT_C void OnDisplay(const TPoint& aOffset); + + IMPORT_C TBool ScrollbarVisible(); + /** + * Calculate rect based on item count. + * + * @since S60 V4.0 + * @return None. + */ + IMPORT_C void ReCalcLayout(); + + IMPORT_C TInt MinItemWidthInPixels(); +private: + /** + * Adjust the txt which is appended to column list. + * As we use column list there, we need insert "\t" to the txt in order to + * display the txt. + * + * @since S60 V5.0 + * @param aTxt The text to be added. + * @return The txt after insert "\t" to the header. + */ + const TDesC& AdjustColumnText(const TDesC& aTxt); + + void UpdateControlContext(); + void UpdateTextColors(); + void RemoveItemByIndexL(TInt aIndex); +private: + + //CAknChoiceListPopup* iListBoxCtrl; + //CAknSingleStyleListBox* iListBox; + CAknSinglePopupMenuStyleListBox* iListBox; + CCoeControl* iParent; + //There must be a seperate scrollbar control to handle scroll bar pointer event. + //because pointer event is sent to RWindow directly. + CFepUiBaseCtrl* iScrollbarCtrl; + + TBool iScrollbarCaptured; + + //buffer used to insert '\t' to the colum list box + HBufC* iTxtTransferBuf; + + CAknsFrameBackgroundControlContext* iBgContext; + }; +#endif //C_AKN_FEPLAYOUTCHOICELIST_H +//End Of File