diff -r 000000000000 -r eb1f2e154e89 textinput/peninputarc/inc/peninputlayoutcontrolinc/peninputlayoutcandidatewnd.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/textinput/peninputarc/inc/peninputlayoutcontrolinc/peninputlayoutcandidatewnd.h Tue Feb 02 01:02:04 2010 +0200 @@ -0,0 +1,350 @@ +/* +* 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 candidate window +* +*/ + +#ifndef C_CCANDIDATEWND_H +#define C_CCANDIDATEWND_H + +#include + +/** + * CCandidateWnd + * + * Candidate window. + * + * @lib feplayoutcontrol.lib + * @since S60 V4.0 + */ +class CCandidateWnd : public CFepUiBaseCtrl, public MCandidateBuffer, + public MTimerHandler + { +public: + + /** + * Destructor. + * + * @since S60 V4.0 + */ + IMPORT_C ~CCandidateWnd(); + + /** + * Factory function. + * + * @since S60 V4.0 + * @param aRect The rectangle area for this control + * @param aCandidateRectNum Number of candidates in one page + * @param aUiLayout Ui layout who contains this control + * @param aControlId control Id + * @param aHideTimer Auto hide timer delay + * @return An instance of CCandiadateWnd class + */ + IMPORT_C static CCandidateWnd* NewL(const TRect& aRect, TInt aCandidateRectNum, + CFepUiLayout* aUiLayout, TInt aCtrlId, + TTimeIntervalMicroSeconds32 aHideTimer = 0 ); + /** + * Get Selected candidates. + * + * @since S60 V4.0 + * @return Current selected candidate + */ + IMPORT_C const TDesC& GetSelCandidate(); + + /** + * Set autohide timer delay. + * + * @since S60 V4.0 + * @param aDelay The timer delay. If delay interval is 0, then disable auto hide + */ + IMPORT_C void SetAutoHideDelay(TTimeIntervalMicroSeconds32 aDelay); + + /** + * Set number of candiates in one line + * The cell rect and text rect is then caculted. text rect = cell rect + * + * @since S60 V4.0 + * @param aNumInLine The number of candiates in one page line + */ + IMPORT_C void SetCandidateNumL(TInt aNumInLine); + + /** + * Set number of candiates in one line and cell rect and text rect size. + * + * @since S60 V4.0 + * @param aNumInLine The number of candiates in one page line + * @param aCellRectSize The cell rect size for one candidate + * @param aTextRect The text rect for candidate drawing. This is relative + * to the cell rect. + */ + IMPORT_C void SetCandidateNumL(TInt aNumInLine,const TSize& aCellRectSize, + const TRect& aTextRect); + /** + * Set the font for candidate + * + * @since S60 V4.0 + * @param aFontSpec the font spec to be used. + */ + IMPORT_C void SetFont(const TFontSpec& aFontSpec); + + /** + * Set the font for candidate + * + * @since S60 V4.0 + * @param aFont the font to be used.Ownership not transferred. + */ + IMPORT_C void SetFont(const CFont* aFont); + + /** + * Set the baseline for text drawing + * + * @since S60 V4.0 + * @param aBaseline The baseline used for candidate drawing + */ + inline void SetBaseline(TInt aBaseline); + + /** + * get the baseline for text drawing + * + * @since S60 V4.0 + * @return The baseline + */ + inline TInt Baseline(); + + //from base class CFepUiBaseCtrl + + /** + * From CFepUiBaseCtrl + * Draw control + * + * @since S60 V4.0 + */ + IMPORT_C void Draw(); + + /** + * From CFepUiBaseCtrl + * Update control and it's components rect + * + * @since S60 V4.0 + * @param aOffset The offset to be moved + */ + IMPORT_C void Move(const TPoint& aOffset); + + /** + * From CFepUiBaseCtrl + * Handle pointer levae event. + * This will be called only when it's got pointer down event before and + * now pointer leaves without pointer up event + * + * @since S60 V4.0 + * @param aPoint current pointer position + */ + virtual IMPORT_C void HandlePointerLeave(const TPoint& aPoint); + + /** + * From CFepUiBaseCtrl + * Call back function when layout starts dragging + * + * @since S60 V4.0 + */ + virtual IMPORT_C void OnLayoutDraggingStart(); + + /** + * From CFepUiBaseCtrl + * Call back function when layout ends dragging + * + * @since S60 V4.0 + */ + virtual IMPORT_C void OnLayoutDraggingEnd(); + + /** + * OnActivate. Called when the layout is going to be shown. + * + * @since S60 v4.0 + */ + virtual IMPORT_C void OnActivate(); + + /** + * OnDeActivate. Called when the layout is going to be hidden + * + * @since S60 v4.0 + */ + virtual IMPORT_C void OnDeActivate(); + + //from base class MTimerHandler + /** + * From MTimerHandler + * HandleTimerOut. Handling time out event + * + * @since S60 V4.0 + * @param aTimeType The timer type + */ + IMPORT_C void HandleTimerOut(TInt aTimeType); + + //from base class MCandidateBuffer + /** + * From MCandidateBuffer + * Set candidate buffer + * + * @since S60 V4.0 + * @param aCandidateData Candidate data + */ + IMPORT_C void SetCandidateL(const RPointerArray& aCandidateData); + +protected: + /** + * Symbian second phrase constructor + * + * @since S60 V4.0 + */ + IMPORT_C void ConstructL(); + + /** + * From CFepUiBaseCtrl + * 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); + + /** + * From CFepUiBaseCtrl + * 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); + + /** + * From CFepUiBaseCtrl + * 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: + /** + * Constructor + * + * @since S60 V4.0 + * @param aRect The rectangle area for this control + * @param aCandidateRectNum Number of candidates in one page + * @param aUiLayout Ui layout who contains this control.Ownership not transferred + * @param aControlId control Id + * @param aHideTimer Auto hide timer delay + */ + IMPORT_C CCandidateWnd(const TRect& aRect,TInt aCandidateRectNum, + CFepUiLayout* aUiLayout, TInt aControlId, + TTimeIntervalMicroSeconds32 aHideTimer); + + /** + * + * Draw indication candidate is selected + * + * @since S60 V4.0 + * @param aSelection The selection index + * @param aPressedFlag The flag indicates whether the pointer is pressed. + * Default value is ETrue, show pressed effect + */ + void DrawIndication(TInt aSelection, TBool aPressedFlag = ETrue); + +private: + /** + * Number of candiate rect in one page line + */ + TInt iCandidateRectNum; + + /** + * Selection index. From 0 to iCandiateRectNum - 1 + */ + TInt iSelection; + + /** + * Auto hide flag. When true, the candidate window will hide if no candidate in list + */ + TBool iAutoHide; + + /** + * Hide timer delay + */ + TTimeIntervalMicroSeconds32 iDelay; + + /** + * Font information + */ + TFontSpec iFontSpec; + + /** + * Candidate rects for each candidate. Valid rect for pen event + */ + RArray iCandidateRectList; + + /** + * Candidate text drawing rects for each candidate. + */ + RArray iCandidateTextRectList; + + /** + * Candidate data + */ + RPointerArray iCandidateList; + + /** + * Baseline for candidate drawing + */ + TInt iBaseline; + + /** + * Hide timer + * Ownd + */ + CLayoutTimer* iHideTimer; + + /** + * Font object used to draw candiates + * Ownd + */ + CFont* iFont; + + /** + * Flag ownership flag. ETrue if CFont object is owned by this control. + */ + TBool iFontOwnership; + + /** + * Indicate whether the pointer has leaved a candidate cell + */ + TBool iPointerLeftCandidate; + + /** + * Reserved item1 + */ + TInt iReserved1; + + /** + * Reserved item2 + */ + TInt iReserved2; + }; +#include "peninputlayoutcandidatewnd.inl" +#endif //C_CCANDIDATEWND_H +//end of CCandidateWindow